ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python列表操作全解析,含实战案例

Python列表操作全解析,含实战案例 同学你好 欢迎回到 Python 课堂。我是你的老师。上节课我们学习了字符串今天我们要迎来 Python 中最强大、最常用的数据结构——列表List。如果把字符串比作一串固定的珍珠项链那么列表就像一个“魔法收纳箱”。你可以往里面装任何东西数字、字符串、甚至其他列表而且可以随时往里面加东西、拿东西、或者改变里面的东西。为了让你彻底掌握它我将这篇教程的精华提炼为5 个核心模块并为你准备了丰富的实战案例和避坑指南。打开你的代码编辑器我们开始吧 第一模块列表的“诞生”创建与特点列表用方括号[]表示元素之间用逗号,分隔。 老师划重点列表中的元素不需要是相同类型这是它和很多其他语言数组最大的不同。 案例# 1. 包含不同类型的“大杂烩”列表magic_box[苹果,100,3.14,True,[1,2,3]]print(magic_box)# 2. 空列表当你需要后续往里面添加数据时empty_list[]# 或者使用内置函数another_emptylist() 第二模块列表的“寻物指南”索引、切片与查列表和字符串一样都是序列所以它们共享相同的索引和切片规则。正向索引从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_colorcolors.pop()# 默认弹出最后一个print(last_color)# 输出: 黄print(colors)# 输出: [红, 蓝, 绿]first_colorcolors.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]# 降序排序 (使用 reverseTrue 参数)numbers.sort(reverseTrue)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))# 输出: 33. 常用全局函数len(list): 获取列表长度元素个数。max(list)/min(list): 获取最大值/最小值元素必须是可比较的同类型如全是数字。⚠️ 第五模块老师的“避坑指南”考试/实战必考 坑点 1append和extend的混淆这是新手最容易犯的错误。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_copyoriginal# ❌ 错误做法这只是起了个别名fake_copy[0]99print(original)# 输出: [99, 2, 3] (原列表被意外修改了)# ✅ 正确做法 1使用 copy() 方法real_copyoriginal.copy()real_copy[1]88print(original)# 输出: [99, 2, 3] (原列表安全了)# ✅ 正确做法 2使用切片 (Pythonic 写法)another_copyoriginal[:] 坑点 3在遍历列表时直接删除元素这会导致索引错乱漏掉元素或报错。# ❌ 危险操作nums[1,2,2,3]forninnums:ifn2:nums.remove(n)# 可能会导致跳过某些元素# ✅ 安全操作遍历它的副本或者使用列表推导式后续课程会学forninnums[:]:# 加上 [:] 遍历副本ifn2:nums.remove(n) 老师的课后小测验光看不练假把式请在你的 Python 环境中尝试解决以下 3 个问题基础操作创建一个列表animals [猫, 狗, 兔子]。请在“狗”和“兔子”之间插入“仓鼠”然后将列表反转最后打印出来。方法辨析有列表A [1, 2]和B [3, 4]。执行A.append(B)后len(A)的值是多少执行A.extend(B)后len(A)的值又是多少实战场景有一个成绩列表scores [85, 92, 78, 92, 60]。请编写代码去掉一个最低分去掉一个最高分然后计算剩余分数的平均值。提示使用remove,max,min,sum,len同学列表是 Python 编程的基石后续的字典、元组以及数据处理如 Pandas都建立在熟练掌握列表的基础上。你可以先自己尝试写出这 3 道题的代码。如果有任何疑惑或者运行代码时遇到了报错比如IndexError或ValueError随时把代码发给我老师会帮你一行行分析 debug今天表现得很棒继续加油 还有什么不清楚的吗
返回列表