Python列表操作全解析,含实战案例
2026/9/5 10:09:00 网站建设 项目流程

同学你好!👋 欢迎回到 Python 课堂。我是你的老师。

上节课我们学习了字符串,今天我们要迎来 Python 中最强大、最常用的数据结构——列表(List)

如果把字符串比作一串固定的珍珠项链,那么列表就像一个“魔法收纳箱”。你可以往里面装任何东西(数字、字符串、甚至其他列表),而且可以随时往里面加东西、拿东西、或者改变里面的东西。

为了让你彻底掌握它,我将这篇教程的精华提炼为5 个核心模块,并为你准备了丰富的实战案例避坑指南。打开你的代码编辑器,我们开始吧!


📦 第一模块:列表的“诞生”(创建与特点)

列表用方括号[]表示,元素之间用逗号,分隔。
🌟 老师划重点:列表中的元素不需要是相同类型!这是它和很多其他语言数组最大的不同。

💡 案例:

# 1. 包含不同类型的“大杂烩”列表magic_box=["苹果",100,3.14,True,[1,2,3]]print(magic_box)# 2. 空列表(当你需要后续往里面添加数据时)empty_list=[]# 或者使用内置函数another_empty=list()

🔍 第二模块:列表的“寻物指南”(索引、切片与查)

列表和字符串一样,都是序列,所以它们共享相同的索引和切片规则。

  • 正向索引:从0开始。
  • 反向索引:从-1开始(-1代表最后一个元素)。
  • 成员检查:使用in关键字。

💡 案例:

fruits=["苹果","香蕉","樱桃","葡萄","西瓜"]# 1. 索引访问print(fruits[0])# 输出: 苹果print(fruits[-1])# 输出: 西瓜 (倒数第一个)# 2. 切片访问 (左闭右开)print(fruits[1:3])# 输出: ['香蕉', '樱桃'] (取索引 1 和 2)print(fruits[2:])# 输出: ['樱桃', '葡萄', '西瓜'] (从索引 2 到末尾)print(fruits[::-1])# 输出: ['西瓜', '葡萄', '樱桃', '香蕉', '苹果'] (列表反转)# 3. 检查元素是否存在print("香蕉"infruits)# 输出: Trueprint("橘子"infruits)# 输出: False

🛠️ 第三模块:列表的“增删改”(核心操作)🌟重中之重

这是列表最常用的操作,老师为你分类整理,请仔细对比它们的区别:

1. 增加元素 (Add)
  • append(x): 在列表末尾添加一个元素。
  • extend(iterable): 在列表末尾一次性追加多个元素(把另一个序列“拆开”加进来)。
  • insert(i, x): 在指定索引i的位置插入元素x

💡 案例:

nums=[1,2,3]nums.append(4)print(nums)# 输出: [1, 2, 3, 4]nums.extend([5,6])# 注意:传入的是一个列表print(nums)# 输出: [1, 2, 3, 4, 5, 6]nums.insert(0,99)# 在索引 0 的位置插入 99print(nums)# 输出: [99, 1, 2, 3, 4, 5, 6]
2. 删除元素 (Remove)
  • remove(x): 删除列表中第一个匹配的值x。(如果找不到会报错!)
  • pop([i]): 移除并返回指定索引i的元素。如果不写索引,默认移除并返回最后一个元素。(像弹夹弹出子弹一样)。
  • del: Python 的语句,可以按索引删除,也可以删除整个列表变量。
  • clear(): 清空列表,保留空壳[]

💡 案例:

colors=["红","绿","蓝","绿","黄"]# 1. remove: 按值删除 (只删第一个遇到的)colors.remove("绿")print(colors)# 输出: ['红', '蓝', '绿', '黄']# 2. pop: 按索引删除,并拿到被删的值last_color=colors.pop()# 默认弹出最后一个print(last_color)# 输出: 黄print(colors)# 输出: ['红', '蓝', '绿']first_color=colors.pop(0)# 弹出索引 0 的元素print(first_color)# 输出: 红# 3. del: 按索引删除delcolors[0]print(colors)# 输出: ['蓝']
3. 修改元素 (Update)

直接通过索引重新赋值即可(因为列表是可变的,这和字符串不同)。

scores=[80,90,70]scores[1]=95# 把 90 改成 95print(scores)# 输出: [80, 95, 70]

🪄 第四模块:列表的“高级魔法”(常用内置方法与函数)

1. 排序与反转
  • sort(): 对原列表进行就地排序(默认升序)。会改变原列表!
  • reverse(): 将原列表就地反转

💡 案例:

numbers=[4,1,9,3]# 升序排序numbers.sort()print(numbers)# 输出: [1, 3, 4, 9]# 降序排序 (使用 reverse=True 参数)numbers.sort(reverse=True)print(numbers)# 输出: [9, 4, 3, 1]# 反转numbers.reverse()print(numbers)# 输出: [1, 3, 4, 9]

(老师提示:如果不想改变原列表,想得到一个排好序的新列表,可以使用sorted(numbers)函数)

2. 统计与查找
  • count(x): 统计元素x在列表中出现的次数。
  • index(x): 返回元素x第一次出现的索引。(找不到会报错!)

💡 案例:

letters=['a','b','a','c','a']print(letters.count('a'))# 输出: 3print(letters.index('c'))# 输出: 3
3. 常用全局函数
  • len(list): 获取列表长度(元素个数)。
  • max(list)/min(list): 获取最大值/最小值(元素必须是可比较的同类型,如全是数字)。

⚠️ 第五模块:老师的“避坑指南”(考试/实战必考!)

🚫 坑点 1:appendextend的混淆

这是新手最容易犯的错误。

list_a=[1,2]list_b=[3,4]list_a.append(list_b)print(list_a)# 输出: [1, 2, [3, 4]] <-- 把整个列表当成了一个元素塞进去!list_c=[1,2]list_c.extend(list_b)print(list_c)# 输出: [1, 2, 3, 4] <-- 把元素拆开,合并进来!(这才是你想要的)
🚫 坑点 2:列表的“影子克隆”(浅拷贝陷阱)

在 Python 中,=赋值不会创建新列表,它只是给原来的列表贴了一个“新标签”(别名)。修改其中一个,另一个也会变!

original=[1,2,3]fake_copy=original# ❌ 错误做法:这只是起了个别名fake_copy[0]=99print(original)# 输出: [99, 2, 3] (原列表被意外修改了!)# ✅ 正确做法 1:使用 copy() 方法real_copy=original.copy()real_copy[1]=88print(original)# 输出: [99, 2, 3] (原列表安全了)# ✅ 正确做法 2:使用切片 (Pythonic 写法)another_copy=original[:]
🚫 坑点 3:在遍历列表时直接删除元素

这会导致索引错乱,漏掉元素或报错。

# ❌ 危险操作:nums=[1,2,2,3]forninnums:ifn==2:nums.remove(n)# 可能会导致跳过某些元素# ✅ 安全操作:遍历它的副本,或者使用列表推导式(后续课程会学)forninnums[:]:# 加上 [:] 遍历副本ifn==2:nums.remove(n)

📝 老师的课后小测验

光看不练假把式,请在你的 Python 环境中尝试解决以下 3 个问题:

  1. 基础操作:创建一个列表animals = ["猫", "狗", "兔子"]。请在“狗”和“兔子”之间插入“仓鼠”,然后将列表反转,最后打印出来。
  2. 方法辨析:有列表A = [1, 2]B = [3, 4]。执行A.append(B)后,len(A)的值是多少?执行A.extend(B)后,len(A)的值又是多少?
  3. 实战场景:有一个成绩列表scores = [85, 92, 78, 92, 60]。请编写代码:去掉一个最低分,去掉一个最高分,然后计算剩余分数的平均值。(提示:使用remove,max,min,sum,len

同学,列表是 Python 编程的基石,后续的字典、元组以及数据处理(如 Pandas)都建立在熟练掌握列表的基础上。

你可以先自己尝试写出这 3 道题的代码。如果有任何疑惑,或者运行代码时遇到了报错(比如IndexErrorValueError),随时把代码发给我,老师会帮你一行行分析 debug!

今天表现得很棒,继续加油!💪 还有什么不清楚的吗?

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询