列表 —— 装数据的盒子与常用操作
普通课约 55 分钟
本课导读
到目前为止,一个变量只能装一个值。可现实世界的数据都是成串出现的:一周七天的步数、全组人的名字、购物车里的商品。本课学 Python 装"一串数据"的头号容器——列表,以及围绕它的增删改查。它是你通往数据处理世界的第一件重型装备。
没有列表的日子有多惨
想记录五位朋友的名字,按老办法:
friend1 = "小雨"
friend2 = "阿杰"
friend3 = "小林"
friend4 = "老王"
friend5 = "丽丽"
print(friend1, friend2, friend3, friend4, friend5)
五个人就要五个变量,一百个人呢?循环也帮不上忙——for 没法遍历五个散装变量。列表把它们装进同一个盒子:
语法拆解:
- 方括号
[]创建列表,元素用逗号分隔(什么类型都能装,数字、字符串混装也行) 列表[位置]取出某个元素,这个位置叫索引——从 0 开始数(还记得 range 也从 0 开始吗?同一个传统)- 负索引从尾巴倒着数:
[-1]是最后一个,[-2]是倒数第二个 len()返回元素个数
注意
索引从 0 开始意味着:5 个元素的合法索引是 0~4。取 friends[5] 会报 IndexError(越界)——新手第二常见的报错,见过一次就记住了:最后一个元素的索引 = 长度 - 1(或者干脆用 [-1])。
增、删、改
列表是"活"的容器,随时可以变动:
.append(x):追加到末尾——用得最多的一个.remove(x):删除第一个等于 x 的元素列表[i] = 新值:原地修改x in 列表:判断存在,返回 True/False(上单元 if 的好搭档)
列表 × 循环:正式合体
列表真正的威力在于和 for 循环组合——"对每一个元素做同一件事":
眼熟吗?累加器、循环加 if——上单元的套路原封不动搬过来,只是遍历对象从 range 换成了真实数据。你在猜数字里练的每一招,都在为处理真实数据做准备。
提示
for price in prices 读作"对 prices 里的每一个 price"——循环变量取单数名、列表取复数名,是让代码像英语一样好读的小习惯。
✍️ 练习
练习 1:口袋清单
创建一个装 4 样随身物品的列表:打印第一样和最后一样;追加"充电宝"后打印总数;最后遍历打印成"第 1 件:钥匙"这样的清单(提示:需要一个计数器配合)。
✅ 参考答案
items = ["钥匙", "钱包", "耳机", "口罩"]
print(items[0])
print(items[-1])
items.append("充电宝")
print(f"现在共 {len(items)} 件")
count = 0
for item in items:
count = count + 1
print(f"第 {count} 件:{item}")
练习 2:平均分
算出这组分数的平均分(保留原始精度即可),并打印高于平均分的分数各是多少。
💡 提示
平均分 = 累加总和 ÷ len(scores)。第二问需要再遍历一次,用 if 和平均分比较。
✅ 参考答案
scores = [72, 88, 95, 60, 83]
total = 0
for s in scores:
total = total + s
average = total / len(scores)
print(f"平均分 {average}")
for s in scores:
if s > average:
print(f"{s} 高于平均分")
练习 3:手写找最大(挑战)
不许用任何现成函数,只用循环和 if 找出列表里最大的数。(这是面试常客,思路比答案重要。)
💡 提示
设一个"擂主"变量,初始为第一个元素 numbers[0];遍历列表,谁比擂主大谁上台。
✅ 参考答案
numbers = [34, 7, 89, 2, 56]
biggest = numbers[0] # 先让第一个当擂主
for n in numbers:
if n > biggest:
biggest = n # 打擂成功,换人
print(f"最大的是 {biggest}")
“擂台模式”和累加器一样是循环的经典套路——找最小值、找最长字符串,全是它的变体。(Python 其实自带 max(),但手写一遍的人才真正理解它。)
随堂测验
1. colors = ["红", "绿", "蓝"],colors[1] 是什么?
2. 取列表最后一个元素,最稳妥的写法是?
3. 想把新任务加到待办列表末尾,用哪个操作?
4. nums = [3, 8, 5],执行 for n in nums: print(n * 2) 输出什么?
5. scores 有 5 个元素,scores[5] 会发生什么?
本课小结
- 列表 = 装一串数据的盒子:
[]创建,索引从 0 起,[-1]取尾,len()数个数 - 增删改查:
.append()/.remove()/列表[i] = x/in - 列表 × for = "对每个元素做同一件事";累加器、擂台模式是两大经典套路
- 越界报
IndexError:合法索引到 长度-1 为止
下一课认识另一个容器——字典:当数据需要"按名字查"而不是"按位置查"时用它。
划选正文任意文字可高亮、批注或加入复习卡
讨论
载入中…