第 18 课 · 阶段三 · 数据结构
列表 List
列表是 Python 最常用的“容器”,能装任意多个数据。这一课从创建、增删改查到切片排序,把列表彻底学透。
🎯 学完本课你将掌握
- 创建列表并访问、修改元素
- 掌握列表的增、删、改、查方法
- 会切片、排序与复制列表
- 会用 in 判断元素是否存在
一、创建列表
创建列表.py
1fruits = ["苹果", "香蕉", "橘子"]2nums = [1, 2, 3, 4, 5]3mixed = [1, "你好", 3.14, True] # 可混合类型4empty = [] # 空列表5print(fruits, nums, mixed, empty)二、访问与修改
访问修改.py
1fruits = ["苹果", "香蕉", "橘子"]2print(fruits[0]) # 苹果 索引从0开始3print(fruits[-1]) # 橘子 负数从右数4fruits[1] = "西瓜" # 修改元素5print(fruits) # ['苹果', '西瓜', '橘子']三、增加元素
| 方法 | 作用 | 示例 |
|---|---|---|
| append(x) | 末尾追加 | lst.append(4) |
| insert(i, x) | 在指定位置插入 | lst.insert(0, '头部') |
| extend(列表) | 合并另一个列表 | lst.extend([5,6]) |
增加元素.py
1lst = [1, 2, 3]2lst.append(4) # [1,2,3,4]3lst.insert(0, 0) # [0,1,2,3,4]4lst.extend([5, 6]) # [0,1,2,3,4,5,6]5print(lst)四、删除元素
| 方法 | 作用 | 示例 |
|---|---|---|
| remove(x) | 删除第一个匹配值 | lst.remove(2) |
| pop(i) | 弹出并返回下标i的元素 | lst.pop() 删除末尾 |
| del lst[i] | 按下标删除 | del lst[0] |
| clear() | 清空所有 | lst.clear() |
删除元素.py
1lst = [10, 20, 30, 20, 40]2lst.remove(20) # 删除第一个20 → [10,30,20,40]3last = lst.pop() # 弹出40 → [10,30,20]4first = lst.pop(0) # 弹出10 → [30,20]5del lst[0] # 删除下标0 → [20]6print(last, first, lst)五、切片与复制
切片复制.py
1nums = [0, 1, 2, 3, 4, 5]2print(nums[1:4]) # [1,2,3]3print(nums[::-1]) # [5,4,3,2,1,0] 反转4b = nums[:] # 完整复制(新列表)5b[0] = 996print(nums, b) # 原列表不受影响⚠️ 注意
直接 c = nums 是引用,改 c 会连 nums 一起改;要独立副本用 nums[:] 或 nums.copy()。
六、排序与统计
排序统计.py
1scores = [88, 55, 92, 70, 61]2scores.sort() # 原地升序排序3print(scores) # [55,61,70,88,92]4scores.sort(reverse=True) # 降序5print(scores)6print(max(scores)) # 最大值7print(min(scores)) # 最小值8print(sum(scores)) # 总和9print(len(scores)) # 元素个数10print(70 in scores) # True 判断是否存在七、遍历列表
遍历列表.py
1names = ["张三", "李四", "王五"]2for n in names:3 print(n)45for i, n in enumerate(names):6 print(i, n)八、常见错误与解决
常见错误与解决
| 错误现象 | 原因 / 解决方法 |
|---|---|
IndexError: list index out of range | 访问了不存在的下标,先确认 len(lst)。 |
ValueError: list.remove(x): x not in list | remove 的值不存在,先判断 if x in lst 再删。 |
sort 后列表变了但想保留原样 | 用 sorted(lst) 返回新列表,lst.sort() 是原地修改。 |
✍️ 小练习
创建学生分数列表,完成:追加两个分数、删除一个最低分、排序后打印前 3 名、计算平均分。
📌 本节小结
列表是“可变的有序容器”:append/insert/extend 增,remove/pop/del 删,索引切片访问,sort/sorted 排序,in 判断存在。它是数据结构的重中之重,务必多练。