列表与元组
列表是 Python 里最常用的数据结构,可以理解为能装很多东西的"数组"。与单个变量只能存一个值不同,列表可以同时存多个值,而且类型可以混着放。
创建列表
用方括号定义列表,元素之间用逗号分隔:
members = ["Alice", "Bob", "Carol", "David"]
print(members)
输出:
['Alice', 'Bob', 'Carol', 'David']
列表里的元素类型可以不一样:
mixed = ["AITC", 2024, 3.14, True]
访问元素
列表里的每个元素都有一个编号(索引),从 0 开始:
members = ["Alice", "Bob", "Carol", "David"]
print(members[0]) # Alice
print(members[1]) # Bob
print(members[2]) # Carol
索引为负数时,从末尾开始数:
print(members[-1]) # David,最后一个
print(members[-2]) # Carol,倒数第二个
索引也可以配合 f-string 使用:
leader = members[0]
print(f"本轮组长是 {leader}")
修改列表
修改某个元素
直接用索引赋值:
members = ["Alice", "Bob", "Carol", "David"]
members[1] = "Eric" # Bob 换成了 Eric
print(members)
# ['Alice', 'Eric', 'Carol', 'David']
添加元素
append() 往末尾追加一个元素:
members = ["Alice", "Bob"]
members.append("Carol")
print(members)
# ['Alice', 'Bob', 'Carol']
insert() 在指定位置插入:
members = ["Alice", "Bob", "Carol"]
members.insert(1, "Eric") # 在索引 1 的位置插入
print(members)
# ['Alice', 'Eric', 'Bob', 'Carol']
删除元素
知道索引时用 del:
members = ["Alice", "Bob", "Carol"]
del members[1]
print(members)
# ['Alice', 'Carol']
知道值时用 remove():
members = ["Alice", "Bob", "Carol"]
members.remove("Bob")
print(members)
# ['Alice', 'Carol']
如果值不存在会报错,所以用之前最好确认一下。
pop() 删除并返回指定位置的元素,默认是最后一个:
members = ["Alice", "Bob", "Carol"]
last = members.pop()
print(last) # Carol
print(members) # ['Alice', 'Bob']
组织列表
排序
sorted() 返回排序后的新列表,不改变原列表:
scores = [85, 92, 78, 95]
print(sorted(scores)) # [78, 85, 92, 95]
print(sorted(scores, reverse=True)) # [95, 92, 85, 78]
print(scores) # [85, 92, 78, 95] 原列表没变
sort() 直接修改原列表:
scores = [85, 92, 78, 95]
scores.sort()
print(scores) # [78, 85, 92, 95]
反转
members = ["Alice", "Bob", "Carol"]
members.reverse()
print(members) # ['Carol', 'Bob', 'Alice']
获取长度
members = ["Alice", "Bob", "Carol"]
print(len(members)) # 3
遍历列表
用 for 循环逐个处理列表里的元素:
members = ["Alice", "Bob", "Carol"]
for member in members:
print(f"欢迎 {member} 加入社团")
输出:
欢迎 Alice 加入社团
欢迎 Bob 加入社团
欢迎 Carol 加入社团
for 循环的缩进很重要,属于循环体的代码必须缩进 4 个空格:
for member in members:
print(member) # 在循环里,会执行多次
print("结束") # 不在循环里,只执行一次
数值列表
range()
生成一系列数字:
for i in range(5):
print(i)
# 0 1 2 3 4
range(1, 5) 从 1 开始到 5 结束(不含 5):
for i in range(1, 5):
print(i)
# 1 2 3 4
range(0, 10, 2) 步长为 2:
for i in range(0, 10, 2):
print(i)
# 0 2 4 6 8
转成列表:
numbers = list(range(5))
print(numbers) # [0, 1, 2, 3, 4]
统计计算
digits = [1, 2, 3, 4, 5]
print(min(digits)) # 1
print(max(digits)) # 5
print(sum(digits)) # 15
列表推导式
一行代码生成列表:
squares = [x**2 for x in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
相当于:
squares = []
for x in range(1, 6):
squares.append(x**2)
切片
取列表的一部分:
members = ["Alice", "Bob", "Carol", "David", "Eric"]
print(members[0:3]) # ['Alice', 'Bob', 'Carol']
print(members[:3]) # 从头开始,同上
print(members[2:]) # 从索引 2 到末尾
print(members[-2:]) # 最后两个
切片返回的是新列表,不会修改原列表。
遍历切片:
for member in members[:3]:
print(member)
复制列表:
new_members = members[:] # 从头到尾切片,等于复制
注意,直接用 = 赋值不会复制,两个变量指向同一个列表。
元组
元组和列表很像,但定义后不能修改。用圆括号定义:
dimensions = (1920, 1080)
print(dimensions[0]) # 1920
尝试修改会报错:
dimensions[0] = 2560 # TypeError
虽然不能修改元素,但可以给元组变量重新赋值:
dimensions = (1920, 1080)
dimensions = (2560, 1440) # ✅ 这是重新赋值,不是修改元素
元组适合存储不会改变的数据,比如坐标、颜色值、配置项等。
代码风格
PEP 8(Python 官方代码规范)建议:
- 缩进用 4 个空格,不要用 Tab
- 每行不超过 79 个字符
- 列表、字典等长数据可以适当换行
- 运算符前后加空格:
x + y而不是x+y
养成好习惯,代码会更易读,团队合作也更顺畅。