Skip to content

Python 列表操作详解

列表是 Python 中最常用的数据结构之一,它允许你存储一系列有序的元素。本文将详细介绍列表的各种操作,包括成员检查、连接、重复和切片,并通过示例代码帮助你快速上手。

1. 成员检查 (Membership Tests)

成员检查用于判断一个元素是否存在于列表中。Python 提供了 innot in 运算符来实现这个功能。

python
l = ["宝马", "Z4", "红色"]

# 检查 "红色" 是否在列表 l 中
print("红色" in l)  # 输出: True

# 检查 "金色" 是否在列表 l 中
print("金色" in l)  # 输出: False

# 检查 "金色" 是否不在列表 l 中
print("金色" not in l) # 输出: True

拓展: innot in 运算符不仅可以用于列表,还可以用于字符串、元组、集合和字典等数据类型。

2. 列表连接 (Concatenation)

连接操作用于将两个列表合并成一个新的列表。可以使用 + 运算符或者 += 运算符来实现。

使用 + 运算符

+ 运算符会创建一个新的列表,包含两个原始列表的所有元素。

python
l = ["宝马", "Z4"]
k = [2019, "红色"]

# 连接列表 l 和 k
new_list = l + k
print(new_list)  # 输出: ['宝马', 'Z4', 2019, '红色']

使用 += 运算符

+= 运算符直接修改原始列表,将另一个列表的元素添加到原始列表的末尾。

python
l = ["宝马", "Z4"]

# 将列表 [2019, "红色"] 添加到列表 l 中
l += [2019, "红色"]
print(l)  # 输出: ['宝马', 'Z4', 2019, '红色']

注意: + 运算符会创建新的列表,而 += 运算符会修改原始列表。选择哪种方式取决于你的需求。 如果需要保留原始列表,应该使用 + 运算符。

3. 列表重复 (Repetition)

重复操作用于将列表中的元素重复指定的次数。可以使用 * 运算符来实现。

python
l = [1, 2]

# 将列表 l 重复 3 次
repeated_list = l * 3
print(repeated_list)  # 输出: [1, 2, 1, 2, 1, 2]

4. 列表切片 (Slicing)

切片操作用于获取列表的一个子集。可以使用 l[i:j:k] 的形式来指定切片的起始索引、结束索引和步长。

  • i: 起始索引(包含该位置的元素),默认为 0。
  • j: 结束索引(不包含该位置的元素),默认为列表的长度。
  • k: 步长,表示每隔多少个元素取一个,默认为 1。

基本切片

python
l = ["宝马", "Z4", 2019, 4, "红色", True]

# 获取索引 1 到 3 (不包含 4) 的元素
print(l[1:4])  # 输出: ['Z4', 2019, 4]

指定步长

python
l = ["宝马", "Z4", 2019, 4, "红色", True]

# 从索引 1 开始,到索引 3 (不包含 4) 结束,步长为 2
print(l[1:4:2])  # 输出: ['Z4', 4]

使用默认值

python
l = ["宝马", "Z4", 2019, 4, "红色", True]

# 从索引 2 开始到列表末尾
print(l[2:])  # 输出: [2019, 4, '红色', True]

# 从列表开头到索引 3 (不包含 4)
print(l[:4])  # 输出: ['宝马', 'Z4', 2019, 4]

使用负索引

负索引表示从列表末尾开始计数。例如,l[-1] 表示列表的最后一个元素,l[-2] 表示倒数第二个元素。

python
l = ["宝马", "Z4", 2019, 4, "红色", True]

# 获取最后 4 个元素
print(l[-4:])  # 输出: [2019, 4, '红色', True]

# 获取从列表开头到倒数第 2 个元素 (不包含倒数第 2 个元素)
print(l[:-2])  # 输出: ['宝马', 'Z4', 2019, 4]

# 获取倒数第 4 个到倒数第 2 个元素 (不包含倒数第 1 个元素)
print(l[-4:-1]) # 输出: [2019, 4, '红色']

切片赋值

切片操作还可以用于替换列表中的多个元素。

python
l = ["宝马", "Z4", 2019, 4, "红色", True]

# 将列表的前两个元素替换为 ["起亚", "索奈"]
l[:2] = ["起亚", "索奈"]
print(l)  # 输出: ['起亚', '索奈', 2019, 4, '红色', True]


l = ["宝马", "Z4", 2019, 4, "红色", True]
# 将索引 1,3 的元素替换为 "索奈" 和 2
l[1:5:2] = ["索奈", 2]
print(l)  # 输出: ['宝马', '索奈', 2019, 2, '红色', True]

注意: 切片赋值时,赋值的列表长度可以与切片的长度不一致,Python 会自动调整列表的长度。

切片删除

可以使用 del 语句和切片操作来删除列表中的多个元素。

python
l = ["宝马", "Z4", 2019, 4, "红色", True]

# 删除列表的前两个元素
del l[:2]
print(l)  # 输出: [2019, 4, '红色', True]


l = ["宝马", "Z4", 2019, 4, "红色", True]
# 删除索引 0,2,4 的元素
del l[:5:2]
print(l)  # 输出: ['Z4', 4, True]