列表
本节目标
学完这一节,你会知道:
- 列表是什么,适合保存什么数据
- 如何用索引和切片访问列表元素
- 如何增加、修改、删除列表元素
- 如何排序、统计和遍历列表
- 如何写一个简单的任务清单程序
列表是 Python 里最常用的数据结构。只要你要保存“一组东西”,第一反应通常就是列表。
先跑一个例子
新建文件 list_demo.py,写入:
tasks = ["学习变量", "练习循环", "整理笔记"]
tasks.append("完成小练习")
tasks[1] = "练习 for 循环"
print("今日任务:")
for i, task in enumerate(tasks, start=1):
print(f"{i}. {task}")
运行:
python3 list_demo.py
你会看到:
今日任务:
1. 学习变量
2. 练习 for 循环
3. 整理笔记
4. 完成小练习
这里用列表保存多个任务,用 append() 增加任务,用索引修改任务。
什么是列表?
列表用来保存一组有顺序的数据。
fruits = ["苹果", "香蕉", "橙子"]
scores = [85, 92, 78]
mixed = ["小明", 18, True]
列表特点:
- 有顺序
- 可以重复
- 可以修改
- 可以保存多个值
虽然列表可以混合保存不同类型,但实际写代码时,通常让一个列表保存同一类数据。
索引和切片
列表索引从 0 开始。
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
print(fruits[0])
print(fruits[1])
print(fruits[-1])
输出:
苹果
香蕉
葡萄
切片可以取出一段:
print(fruits[1:3])
print(fruits[:2])
print(fruits[2:])
输出:
['香蕉', '橙子']
['苹果', '香蕉']
['橙子', '葡萄']
注意:切片结束位置不包含在结果里。
修改列表
按索引修改:
colors = ["红", "绿", "蓝"]
colors[0] = "红色"
print(colors)
输出:
['红色', '绿', '蓝']
也可以用切片修改多个元素:
colors[1:] = ["绿色", "蓝色"]
print(colors)
增加元素
最常用的是 append():
tasks = ["学习变量"]
tasks.append("学习列表")
print(tasks)
指定位置插入用 insert():
tasks.insert(0, "打开电脑")
一次追加多个元素用 extend():
tasks.extend(["复习", "做练习"])
删除元素
删除最后一个元素:
tasks = ["学习", "练习", "休息"]
last = tasks.pop()
print(last)
print(tasks)
按索引删除:
tasks.pop(0)
按值删除:
tasks.remove("练习")
清空列表:
tasks.clear()
遍历列表
直接遍历:
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
带序号遍历:
for i, fruit in enumerate(fruits, start=1):
print(f"{i}. {fruit}")
enumerate() 很适合打印清单。
排序和统计
scores = [85, 92, 78, 92, 60]
print(len(scores))
print(max(scores))
print(min(scores))
print(sum(scores))
print(scores.count(92))
排序:
scores.sort()
print(scores)
scores.sort(reverse=True)
print(scores)
sort() 会修改原列表。
如果不想修改原列表,用 sorted():
original = [3, 1, 2]
new_list = sorted(original)
print(original)
print(new_list)
了解即可:列表推导式
列表推导式可以用一行代码生成列表。
squares = [i ** 2 for i in range(1, 6)]
print(squares)
输出:
[1, 4, 9, 16, 25]
带条件:
evens = [i for i in range(1, 11) if i % 2 == 0]
print(evens)
推导式后面还有专门一节会详细讲。
逐行拆解
再看开头的任务清单:
tasks = ["学习变量", "练习循环", "整理笔记"]
创建一个任务列表。
tasks.append("完成小练习")
在列表末尾增加一个任务。
tasks[1] = "练习 for 循环"
修改索引为 1 的任务,也就是第二个任务。
for i, task in enumerate(tasks, start=1):
遍历任务,同时拿到从 1 开始的编号。
自己改一改
把 list_demo.py 改成购物清单:
items = ["苹果", "牛奶", "面包"]
items.append("鸡蛋")
items.remove("牛奶")
print("购物清单:")
for i, item in enumerate(items, start=1):
print(f"{i}. {item}")
然后继续改:
- 插入一个商品到第一位
- 修改最后一个商品
- 输出清单里一共有多少个商品
常见错误
1. 索引超出范围
fruits = ["苹果", "香蕉"]
print(fruits[5])
这会报 IndexError。
2. remove 删除不存在的元素
fruits = ["苹果", "香蕉"]
fruits.remove("葡萄")
这会报 ValueError。可以先判断:
if "葡萄" in fruits:
fruits.remove("葡萄")
3. 混淆 append 和 extend
items = ["a"]
items.append(["b", "c"])
print(items)
结果是:
['a', ['b', 'c']]
如果想追加多个元素,用 extend():
items.extend(["b", "c"])
4. 修改遍历中的列表
一边遍历一边删除元素,容易漏掉数据。刚入门时,建议先创建新列表,或者遍历列表副本。
小练习
练习 1:成绩统计
给定:
scores = [85, 92, 78, 90, 66]
输出最高分、最低分、平均分。
练习 2:任务清单
创建一个任务列表,至少包含 3 个任务。完成以下操作:
- 增加一个任务
- 删除一个任务
- 打印带编号的任务清单
练习 3:筛选偶数
给定数字列表,筛选出所有偶数,保存到新列表。
参考答案
练习 1:
scores = [85, 92, 78, 90, 66]
average = sum(scores) / len(scores)
print(f"最高分:{max(scores)}")
print(f"最低分:{min(scores)}")
print(f"平均分:{average:.1f}")
练习 2:
tasks = ["读书", "写代码", "运动"]
tasks.append("复盘")
tasks.remove("运动")
for i, task in enumerate(tasks, start=1):
print(f"{i}. {task}")
练习 3:
numbers = [1, 2, 3, 4, 5, 6]
evens = []
for number in numbers:
if number % 2 == 0:
evens.append(number)
print(evens)
小结
这一节你学会了:
- 列表可以保存一组有顺序的数据
- 索引和切片可以访问列表元素
append()、insert()、extend()可以增加元素pop()、remove()、clear()可以删除元素sort()、sorted()、len()、sum()等常用于排序和统计
下一节我们会学习元组与集合。它们和列表很像,但分别适合“保护数据”和“去重分析”。
列表是你的第一个数据收纳箱
任务、成绩、水果、商品,都可以先放进列表里排排坐。索引从 0 开始这件事,刚开始谁都会数错,马哥也建议你多 print 看看。会增删改查之后,你就能管理一小批数据了。
还没有评论,来抢沙发吧!