学径XUEJING · 个人学习平台通知设置

课程库 AI 主线 程序思维基础 › 第 1

列表 —— 装数据的盒子与常用操作

普通课55 分钟

本课导读

到目前为止,一个变量只能装一个值。可现实世界的数据都是成串出现的:一周七天的步数、全组人的名字、购物车里的商品。本课学 Python 装"一串数据"的头号容器——列表,以及围绕它的增删改查。它是你通往数据处理世界的第一件重型装备。

没有列表的日子有多惨

想记录五位朋友的名字,按老办法:

friend1 = "小雨"
friend2 = "阿杰"
friend3 = "小林"
friend4 = "老王"
friend5 = "丽丽"
print(friend1, friend2, friend3, friend4, friend5)

五个人就要五个变量,一百个人呢?循环也帮不上忙——for 没法遍历五个散装变量。列表把它们装进同一个盒子:

Python

语法拆解:

  • 方括号 [] 创建列表,元素用逗号分隔(什么类型都能装,数字、字符串混装也行)
  • 列表[位置] 取出某个元素,这个位置叫索引——从 0 开始数(还记得 range 也从 0 开始吗?同一个传统)
  • 负索引从尾巴倒着数:[-1] 是最后一个,[-2] 是倒数第二个
  • len() 返回元素个数

注意

索引从 0 开始意味着:5 个元素的合法索引是 0~4。取 friends[5] 会报 IndexError(越界)——新手第二常见的报错,见过一次就记住了:最后一个元素的索引 = 长度 - 1(或者干脆用 [-1])。

增、删、改

列表是"活"的容器,随时可以变动:

Python
  • .append(x):追加到末尾——用得最多的一个
  • .remove(x):删除第一个等于 x 的元素
  • 列表[i] = 新值:原地修改
  • x in 列表:判断存在,返回 True/False(上单元 if 的好搭档)

列表 × 循环:正式合体

列表真正的威力在于和 for 循环组合——"对每一个元素做同一件事":

Python

眼熟吗?累加器、循环加 if——上单元的套路原封不动搬过来,只是遍历对象从 range 换成了真实数据。你在猜数字里练的每一招,都在为处理真实数据做准备。

提示

for price in prices 读作"对 prices 里的每一个 price"——循环变量取单数名、列表取复数名,是让代码像英语一样好读的小习惯。

✍️ 练习

练习 1:口袋清单

创建一个装 4 样随身物品的列表:打印第一样和最后一样;追加"充电宝"后打印总数;最后遍历打印成"第 1 件:钥匙"这样的清单(提示:需要一个计数器配合)。

Python
✅ 参考答案
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:平均分

算出这组分数的平均分(保留原始精度即可),并打印高于平均分的分数各是多少。

Python
💡 提示

平均分 = 累加总和 ÷ 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 找出列表里最大的数。(这是面试常客,思路比答案重要。)

Python
💡 提示

设一个"擂主"变量,初始为第一个元素 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(),但手写一遍的人才真正理解它。)

随堂测验

随堂测验0 / 5 题正确

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 为止

下一课认识另一个容器——字典:当数据需要"按名字查"而不是"按位置查"时用它。

划选正文任意文字可高亮、批注或加入复习卡

讨论

载入中…