创建时间: 2026-08-25最后更新: 2026-08-25

1. 列表

列表用于按顺序保存多个值。课程主题、待处理任务、模型消息和接口返回的记录,都可以先放进列表中,再逐个读取或处理。

使用方括号创建列表,元素之间用逗号分隔:

create.py
1
topics = ["变量", "条件语句", "for 循环"]
2
numbers = [1, 2, 3, 4]
3
empty = []
4
5
print(topics)
6
print(numbers)
7
print(empty)

列表可以保存不同类型的值,但实际项目中通常让同一个列表中的元素具有相近的含义:

mixed.py
1
profile = ["小明", 18, True]
2
3
print(profile)

也可以使用 list() 把其他可遍历对象转换成列表:

from-iterable.py
1
letters = list("Python")
2
numbers = list(range(3))
3
4
print(letters) # ['P', 'y', 't', 'h', 'o', 'n']
5
print(numbers) # [0, 1, 2]

列表是可变对象。创建空列表后,可以通过方法逐步添加数据:

build.py
1
tasks = []
2
3
tasks.append("读取文件")
4
tasks.append("处理数据")
5
6
print(tasks)

2. 访问

列表中的元素按照位置保存,索引从 0 开始:

index.py
1
topics = ["变量", "列表", "字符串"]
2
3
print(topics[0]) # 变量
4
print(topics[1]) # 列表
5
print(topics[-1]) # 字符串

如果索引超出范围,会抛出 IndexError。读取不确定长度的列表时,可以先使用 len() 判断:

safe-index.py
1
topics = ["变量", "列表"]
2
3
if len(topics) > 2:
4
print(topics[2])
5
else:
6
print("没有第三个主题")

切片可以得到一部分元素,规则和字符串切片一样:开始位置包含,结束位置不包含:

slice.py
1
topics = ["变量", "列表", "字符串", "条件语句"]
2
3
print(topics[0:2]) # ['变量', '列表']
4
print(topics[2:]) # ['字符串', '条件语句']
5
print(topics[:3]) # ['变量', '列表', '字符串']
6
print(topics[::-1]) # 倒序列表

in 和 not in 用来判断元素是否存在:

membership.py
1
topics = ["变量", "列表", "字符串"]
2
3
if "列表" in topics:
4
print("已经学习列表")
5
6
if "字典" not in topics:
7
print("还没有学习字典")

3. 修改

列表可以通过索引修改某个元素:

assign.py
1
topics = ["变量", "数组", "字符串"]
2
topics[1] = "列表"
3
4
print(topics)

append() 在列表末尾添加一个元素,extend() 则把另一个可遍历对象中的元素逐个添加进去:

append-extend.py
1
topics = ["变量"]
2
3
topics.append(["列表", "字符串"])
4
print(topics) # ['变量', ['列表', '字符串']]
5
6
topics = ["变量"]
7
topics.extend(["列表", "字符串"])
8
print(topics) # ['变量', '列表', '字符串']

append() 会把参数作为一个整体放进去,extend() 会展开参数中的元素。两者的结果不同,选择时要先明确自己想要哪一种结构。

列表还可以使用 + 拼接。它会按照顺序连接两个列表,并返回一个新的列表,不会修改原来的列表:

concatenate.py
1
basic_topics = ["变量", "列表"]
2
advanced_topics = ["模块", "函数"]
3
4
all_topics = basic_topics + advanced_topics
5
6
print(all_topics) # ['变量', '列表', '模块', '函数']
7
print(basic_topics) # ['变量', '列表']

+ 两边都必须是列表,不能直接把列表和一个单独的元素相加。需要把多个元素追加到原列表时,可以使用 +=:

concatenate-in-place.py
1
topics = ["变量"]
2
topics += ["列表", "字符串"]
3
4
print(topics) # ['变量', '列表', '字符串']

可以简单地这样区分:+ 生成新的列表,+= 把右侧列表中的元素加入当前列表。

insert(index, value) 可以在指定位置插入元素:

insert.py
1
topics = ["变量", "字符串"]
2
topics.insert(1, "列表")
3
4
print(topics)

删除元素时,remove() 按值删除第一次出现的元素,pop() 按索引删除并返回元素:

remove-pop.py
1
topics = ["变量", "列表", "字符串", "列表"]
2
3
topics.remove("列表")
4
last_topic = topics.pop()
5
6
print(topics) # ['变量', '字符串']
7
print(last_topic) # 列表

如果列表中不存在要删除的值,remove() 会抛出 ValueError;如果索引不存在,pop() 会抛出 IndexError。不确定数据是否存在时,先用 in 检查,或者捕获异常。

clear() 会删除列表中的所有元素,但保留列表对象本身:

clear.py
1
tasks = ["读取文件", "保存结果"]
2
tasks.clear()
3
4
print(tasks) # []

4. 查找

列表提供了几个常用的统计和查找方法:

方法作用说明
len(list)获取长度返回元素数量
count(value)统计数量统计值出现的次数
index(value)查找位置返回第一次出现的索引
min(list)最小值元素需要支持比较
max(list)最大值元素需要支持比较
sum(list)求和通常用于数字列表
statistics.py
1
scores = [82, 95, 76, 82]
2
3
print(len(scores)) # 4
4
print(scores.count(82)) # 2
5
print(scores.index(95)) # 1
6
print(min(scores)) # 76
7
print(max(scores)) # 95
8
print(sum(scores)) # 335

调用 index() 前最好先确认元素存在,否则找不到值时会抛出 ValueError:

safe-index-value.py
1
topics = ["变量", "列表", "字符串"]
2
target = "字典"
3
4
if target in topics:
5
print(topics.index(target))
6
else:
7
print("没有找到这个主题")

列表可以使用 sort() 原地排序,也可以使用 sorted() 生成一个新的排序结果:

sort.py
1
scores = [82, 95, 76, 88]
2
3
scores.sort()
4
print(scores) # [76, 82, 88, 95]
5
6
descending = sorted(scores, reverse=True)
7
print(descending) # [95, 88, 82, 76]

sort() 会直接改变原列表,sorted() 不会改变原列表。只想查看排序结果、还需要保留原始顺序时,优先使用 sorted()。

字符串列表也可以按照字符串长度排序:

sort-key.py
1
topics = ["列表", "Python", "字符串"]
2
3
ordered = sorted(topics, key=len)
4
print(ordered)

5. 遍历

for 循环是处理列表中每个元素最常见的方式:

loop.py
1
topics = ["变量", "列表", "字符串"]
2
3
for topic in topics:
4
print(f"正在学习:{topic}")

如果需要同时使用下标,可以使用 enumerate():

enumerate.py
1
topics = ["变量", "列表", "字符串"]
2
3
for index, topic in enumerate(topics, start=1):
4
print(f"第 {index} 个主题:{topic}")

遍历时也可以配合条件语句完成筛选或统计:

filter.py
1
scores = [58, 76, 91, 42, 68]
2
passed = []
3
4
for score in scores:
5
if score >= 60:
6
passed.append(score)
7
8
print(passed) # [76, 91, 68]

如果只是根据一个简单条件生成新列表,可以使用列表推导式:

comprehension.py
1
scores = [58, 76, 91, 42, 68]
2
passed = [score for score in scores if score >= 60]
3
4
print(passed)

列表推导式只是 for 循环的一种简写。刚开始学习时,可以先读懂普通循环,再使用推导式;如果条件和转换逻辑太复杂,普通循环通常更容易维护。

6. 组合

列表经常与字典、循环和条件语句组合使用,保存一组结构相同的数据:

users.py
01
users = [
02
{"name": "小明", "active": True},
03
{"name": "小红", "active": False},
04
{"name": "小李", "active": True},
05
]
06
07
active_names = []
08
for user in users:
09
if user["active"]:
10
active_names.append(user["name"])
11
12
print(active_names) # ['小明', '小李']

列表也可以嵌套列表,用来表达二维数据:

nested.py
1
table = [
2
["姓名", "分数"],
3
["小明", 82],
4
["小红", 95],
5
]
6
7
print(table[1][0]) # 小明
8
print(table[2][1]) # 95

复制列表时要注意:直接赋值不会创建新列表,只是让两个变量指向同一个列表:

reference.py
1
original = ["变量", "列表"]
2
alias = original
3
alias.append("字符串")
4
5
print(original) # ['变量', '列表', '字符串']

如果需要一个独立的列表,可以使用切片、copy() 或 list():

copy.py
1
original = ["变量", "列表"]
2
copied = original.copy()
3
copied.append("字符串")
4
5
print(original) # ['变量', '列表']
6
print(copied) # ['变量', '列表', '字符串']

这些方式是浅复制。如果列表中还嵌套了其他列表,内部列表仍然可能被共享。初学阶段先记住:简单的一维列表可以用 copy(),复杂嵌套结构需要进一步了解深复制。

下面的例子把带空格的课程名称清理后排序,展示列表在实际数据处理中的组合用法:

clean-topics.py
01
raw_topics = [" Python ", "列表", "", "字符串 "]
02
topics = []
03
04
for raw_topic in raw_topics:
05
topic = raw_topic.strip()
06
if topic:
07
topics.append(topic)
08
09
topics.sort()
10
print(topics) # ['Python', '列表', '字符串']
正在验证登录状态
请稍候,验证完成后将继续显示文章内容