当前位置:首页>python>Python3 列表(List):一个能装任何东西的箱子

Python3 列表(List):一个能装任何东西的箱子

  • 2026-09-06 00:14:55
Python3 列表(List):一个能装任何东西的箱子

Python3 列表(List):一个能装任何东西的箱子

我是陈默,一个正拼命上岸的码农。

想象你有一个箱子。

这个箱子能装数字、文字、甚至另一个箱子。

而且你想往里面加东西、拿东西、排序、查找,都行。

这个箱子,就是 Python 的列表。


1. 创建列表:把东西装进箱子

列表用方括号 [] 表示,元素之间用逗号隔开。

# 数字列表scores = [85, 92, 78, 90, 67]# 字符串列表fruits = ["苹果", "香蕉", "橙子"]# 混合列表(什么类型都能装)mixed = [1, "hello", 3.14, True]# 空列表empty = []print(type(scores))    # 输出: <class 'list'>print(scores)           # 输出: [85, 92, 78, 90, 67]

Python 列表最大的特点:什么都能装,不限制类型。


2. 索引:从箱子里拿东西

从 0 开始数,第一个元素是 0:

fruits = ["苹果", "香蕉", "橙子", "葡萄", "西瓜"]print(fruits[0])    # 输出: 苹果(第 1 个)print(fruits[1])    # 输出: 香蕉(第 2 个)print(fruits[4])    # 输出: 西瓜(第 5 个)

从后往前数,用负数:

fruits = ["苹果", "香蕉", "橙子", "葡萄", "西瓜"]print(fruits[-1])    # 输出: 西瓜(倒数第 1 个)print(fruits[-2])    # 输出: 葡萄(倒数第 2 个)

索引超出范围会报错:

fruits = ["苹果", "香蕉", "橙子"]print(fruits[5])    # 报错!IndexError: list index out of range

3. 切片:从箱子里拿一批东西

和字符串切片一样,用 [开始:结束],不包含结束位置:

fruits = ["苹果", "香蕉", "橙子", "葡萄", "西瓜"]print(fruits[1:3])    # 输出: ['香蕉', '橙子']print(fruits[:3])     # 输出: ['苹果', '香蕉', '橙子'](从头开始)print(fruits[2:])     # 输出: ['橙子', '葡萄', '西瓜'](到末尾)print(fruits[:])      # 输出: ['苹果', '香蕉', '橙子', '葡萄', '西瓜'](复制一份)

还可以加步长:

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]print(nums[::2])      # 输出: [0, 2, 4, 6, 8](隔一个取一个)print(nums[1::2])     # 输出: [1, 3, 5, 7, 9](从第2个开始,隔一个取一个)print(nums[::-1])     # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0](反转)

4. 修改列表:往箱子里加、删、改

修改元素

直接通过索引赋值:

fruits = ["苹果", "香蕉", "橙子"]fruits[1] = "芒果"print(fruits)    # 输出: ['苹果', '芒果', '橙子']

添加元素

fruits = ["苹果", "香蕉"]# append():在末尾加一个fruits.append("橙子")print(fruits)    # 输出: ['苹果', '香蕉', '橙子']# insert():在指定位置插入fruits.insert(1, "芒果")print(fruits)    # 输出: ['苹果', '芒果', '香蕉', '橙子']# extend():把另一个列表的所有元素加进来more = ["葡萄", "西瓜"]fruits.extend(more)print(fruits)    # 输出: ['苹果', '芒果', '香蕉', '橙子', '葡萄', '西瓜']

append 和 extend 的区别:

a = [1, 2, 3]b = [1, 2, 3]a.append([4, 5])b.extend([4, 5])print(a)    # 输出: [1, 2, 3, [4, 5]](把整个列表当做一个元素)print(b)    # 输出: [1, 2, 3, 4, 5](把元素逐个加进来)

删除元素

fruits = ["苹果", "香蕉", "橙子", "葡萄", "香蕉"]# remove():删除第一个匹配的元素fruits.remove("香蕉")print(fruits)    # 输出: ['苹果', '橙子', '葡萄', '香蕉']# pop():删除指定位置的元素(默认删最后一个)fruits.pop()         # 删除最后一个print(fruits)        # 输出: ['苹果', '橙子', '葡萄']fruits.pop(0)        # 删除第 1 个print(fruits)        # 输出: ['橙子', '葡萄']# del:直接删除指定位置del fruits[0]print(fruits)        # 输出: ['葡萄']

什么时候用哪个?

  • 知道值,用 remove()
  • 知道位置,用 pop() 或 del
  • pop() 会返回被删除的元素,del 不会

5. 列表常用操作

排序

scores = [85, 92, 78, 90, 67]# sorted():返回新列表,不改变原列表print(sorted(scores))          # 输出: [67, 78, 85, 90, 92]print(sorted(scores, reverse=True))  # 输出: [92, 90, 85, 78, 67](降序)print(scores)                  # 输出: [85, 92, 78, 90, 67](原列表没变)# sort():直接修改原列表scores.sort()print(scores)                  # 输出: [67, 78, 85, 90, 92]

sorted() 和 sort() 的区别:一个不改原列表,一个改。

反转

fruits = ["苹果", "香蕉", "橙子"]fruits.reverse()print(fruits)    # 输出: ['橙子', '香蕉', '苹果']

获取长度

fruits = ["苹果", "香蕉", "橙子", "葡萄"]print(len(fruits))    # 输出: 4

统计和查找

nums = [1, 3, 5, 3, 7, 3, 9]print(nums.count(3))       # 输出: 3(3 出现了 3 次)print(nums.index(7))       # 输出: 4(7 第一次出现的位置)print(5in nums)           # 输出: True(5 在列表里)print(2in nums)           # 输出: False(2 不在列表里)

6. 列表推导式:一行代码创建列表

这是 Python 最优雅的特性之一。

传统写法:

# 把 1-10 的平方放进列表squares = []for i in range(1, 11):    squares.append(i ** 2)print(squares)    # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表推导式——一行搞定:

squares = [i ** 2for i in range(1, 11)]print(squares)    # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

还能加条件:

# 只要偶数的平方even_squares = [i ** 2for i in range(1, 11) if i % 2 == 0]print(even_squares)    # 输出: [4, 16, 36, 64, 100]
# 把成绩列表里及格的分数挑出来scores = [45, 67, 82, 55, 91, 38, 73]passed = [s for s in scores if s >= 60]print(passed)    # 输出: [67, 82, 91, 73]

一开始看不懂没关系。多写几遍就习惯了。


7. 遍历列表:一个一个处理

基本遍历

fruits = ["苹果", "香蕉", "橙子"]for fruit in fruits:    print(f"我喜欢{fruit}")# 输出:# 我喜欢苹果# 我喜欢香蕉# 我喜欢橙子

带索引遍历

fruits = ["苹果", "香蕉", "橙子"]for index, fruit in enumerate(fruits):    print(f"第{index + 1}个:{fruit}")# 输出:# 第1个:苹果# 第2个:香蕉# 第3个:橙子

enumerate() 同时给你索引和值,比手动数索引方便多了。


8. 实战:用列表做个成绩分析工具

scores = [85, 92, 78, 90, 67, 55, 98, 73, 82, 61]# 基本统计print(f"班级人数:{len(scores)}")print(f"最高分:{max(scores)}")print(f"最低分:{min(scores)}")print(f"平均分:{sum(scores) / len(scores):.1f}")# 分数段统计excellent = [s for s in scores if s >= 90]passed = [s for s in scores if s >= 60]failed = [s for s in scores if s < 60]print(f"优秀(≥90):{len(excellent)}人")print(f"及格(≥60):{len(passed)}人")print(f"不及格(<60):{len(failed)}人")# 输出:# 班级人数:10# 最高分:98# 最低分:55# 平均分:78.1# 优秀(≥90):3人# 及格(≥60):8人# 不及格(<60):2人

你看,列表加上循环和条件判断,就能做出实用的工具。


最后

列表是 Python 里用得最多的数据结构,没有之一。

记住三件事:

  1. 索引从 0 开始,append() 加元素,pop() 删元素
  2. sorted() 不改原列表,sort() 改原列表
  3. 列表推导式很优雅,值得多练

我的建议:

把成绩分析那段代码跑一遍。然后试试改成你自己的场景——比如分析你的每月支出、统计你的运动数据。

编程的乐趣在于:用简单的工具,解决你自己的问题。

今天就到这里。

我是陈默,我们下期再见。


如果你觉得这篇文章有帮助,欢迎关注我。我会持续分享 Python 学习的干货。

最新文章

随机文章