跳到主要内容

列表与元组

列表是 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

养成好习惯,代码会更易读,团队合作也更顺畅。