Appearance
Python 列表
列表是 Python 中最常用的数据结构之一,用于存储一系列有序的元素。本章节将详细介绍 Python 中的列表及其操作。
列表的创建
可以使用方括号 [] 或 list() 函数来创建列表。
示例:
python
# 列表的创建
# 使用方括号创建列表
list1 = [1, 2, 3, 4, 5]
print(list1) # 输出:[1, 2, 3, 4, 5]
# 创建空列表
list2 = []
print(list2) # 输出:[]
# 创建包含不同类型元素的列表
list3 = [1, "hello", 3.14, True]
print(list3) # 输出:[1, 'hello', 3.14, True]
# 使用 list() 函数创建列表
list4 = list()
print(list4) # 输出:[]
# 使用 list() 函数将其他可迭代对象转换为列表
list5 = list("hello")
print(list5) # 输出:['h', 'e', 'l', 'l', 'o']
list6 = list(range(10))
print(list6) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]列表的访问
可以使用索引来访问列表中的单个元素,使用切片来访问子列表。
索引
列表的索引从 0 开始,可以使用正索引或负索引。
示例:
python
# 列表的索引
list = [1, 2, 3, 4, 5]
# 正索引
print(list[0]) # 输出:1
print(list[1]) # 输出:2
print(list[2]) # 输出:3
print(list[3]) # 输出:4
print(list[4]) # 输出:5
# 负索引(从右向左)
print(list[-1]) # 输出:5
print(list[-2]) # 输出:4
print(list[-3]) # 输出:3
print(list[-4]) # 输出:2
print(list[-5]) # 输出:1切片
使用切片操作可以获取列表的子列表,语法为 list[start:end:step]。
示例:
python
# 列表的切片
list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 获取从索引 0 到 5 的子列表(不包含索引 5)
print(list[0:5]) # 输出:[0, 1, 2, 3, 4]
# 获取从索引 5 到末尾的子列表
print(list[5:]) # 输出:[5, 6, 7, 8, 9]
# 获取从开始到索引 5 的子列表
print(list[:5]) # 输出:[0, 1, 2, 3, 4]
# 获取整个列表
print(list[:]) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用步长
print(list[::2]) # 输出:[0, 2, 4, 6, 8]
# 反向列表
print(list[::-1]) # 输出:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
# 获取从索引 2 到 8,步长为 2 的子列表
print(list[2:8:2]) # 输出:[2, 4, 6]列表的修改
列表是可变的,可以修改列表中的元素。
示例:
python
# 列表的修改
list = [1, 2, 3, 4, 5]
# 修改单个元素
list[0] = 10
print(list) # 输出:[10, 2, 3, 4, 5]
list[-1] = 50
print(list) # 输出:[10, 2, 3, 4, 50]
# 修改多个元素(切片赋值)
list[1:4] = [20, 30, 40]
print(list) # 输出:[10, 20, 30, 40, 50]
# 插入元素(使用切片赋值)
list[2:2] = [25]
print(list) # 输出:[10, 20, 25, 30, 40, 50]
# 删除元素(使用切片赋值)
list[2:4] = []
print(list) # 输出:[10, 20, 40, 50]列表的方法
Python 提供了许多内置的列表方法,用于操作列表。
添加元素
| 方法 | 描述 | 示例 |
|---|---|---|
append(element) | 在列表末尾添加一个元素 | list.append(6) |
extend(iterable) | 在列表末尾添加可迭代对象中的所有元素 | list.extend([6, 7, 8]) |
insert(index, element) | 在指定位置插入一个元素 | list.insert(0, 0) |
示例:
python
# 添加元素
list = [1, 2, 3, 4, 5]
# append() 方法
list.append(6)
print(list) # 输出:[1, 2, 3, 4, 5, 6]
# extend() 方法
list.extend([7, 8, 9])
print(list) # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
# insert() 方法
list.insert(0, 0)
print(list) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list.insert(5, 4.5)
print(list) # 输出:[0, 1, 2, 3, 4, 4.5, 5, 6, 7, 8, 9]删除元素
| 方法 | 描述 | 示例 |
|---|---|---|
remove(element) | 删除第一个匹配的元素 | list.remove(3) |
pop(index) | 删除并返回指定位置的元素,默认为最后一个 | list.pop() |
clear() | 清空列表 | list.clear() |
示例:
python
# 删除元素
list = [0, 1, 2, 3, 4, 4.5, 5, 6, 7, 8, 9]
# remove() 方法
list.remove(4.5)
print(list) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# pop() 方法
popped_element = list.pop()
print(popped_element) # 输出:9
print(list) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8]
popped_element = list.pop(0)
print(popped_element) # 输出:0
print(list) # 输出:[1, 2, 3, 4, 5, 6, 7, 8]
# clear() 方法
list.clear()
print(list) # 输出:[]排序和反转
| 方法 | 描述 | 示例 |
|---|---|---|
sort(key, reverse) | 对列表进行排序 | list.sort() |
sorted(iterable, key, reverse) | 返回排序后的列表副本 | sorted(list) |
reverse() | 反转列表 | list.reverse() |
reversed(iterable) | 返回反转后的迭代器 | reversed(list) |
示例:
python
# 排序和反转
list = [3, 1, 4, 1, 5, 9, 2, 6, 5]
# sort() 方法(原地排序)
list.sort()
print(list) # 输出:[1, 1, 2, 3, 4, 5, 5, 6, 9]
# 降序排序
list.sort(reverse=True)
print(list) # 输出:[9, 6, 5, 5, 4, 3, 2, 1, 1]
# sorted() 函数(返回新列表)
list = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_list = sorted(list)
print(sorted_list) # 输出:[1, 1, 2, 3, 4, 5, 5, 6, 9]
print(list) # 输出:[3, 1, 4, 1, 5, 9, 2, 6, 5](原列表不变)
# reverse() 方法(原地反转)
list.reverse()
print(list) # 输出:[5, 6, 2, 9, 5, 1, 4, 1, 3]
# reversed() 函数(返回迭代器)
list = [3, 1, 4, 1, 5]
reversed_iter = reversed(list)
print(list(reversed_iter)) # 输出:[5, 1, 4, 1, 3]
print(list) # 输出:[3, 1, 4, 1, 5](原列表不变)查找和计数
| 方法 | 描述 | 示例 |
|---|---|---|
index(element, start, end) | 返回第一个匹配元素的索引 | list.index(5) |
count(element) | 统计元素在列表中出现的次数 | list.count(1) |
示例:
python
# 查找和计数
list = [3, 1, 4, 1, 5, 9, 2, 6, 5]
# index() 方法
print(list.index(5)) # 输出:4
print(list.index(1, 2)) # 从索引 2 开始查找,输出:3
# count() 方法
print(list.count(1)) # 输出:2
print(list.count(5)) # 输出:2
print(list.count(10)) # 输出:0(元素不存在)其他方法
| 方法 | 描述 | 示例 |
|---|---|---|
copy() | 返回列表的浅拷贝 | list.copy() |
len(list) | 返回列表的长度 | len(list) |
in | 检查元素是否在列表中 | 5 in list |
not in | 检查元素是否不在列表中 | 10 not in list |
示例:
python
# 其他方法
list = [1, 2, 3, 4, 5]
# copy() 方法
list_copy = list.copy()
print(list_copy) # 输出:[1, 2, 3, 4, 5]
# 修改原列表,不影响拷贝
list[0] = 10
print(list) # 输出:[10, 2, 3, 4, 5]
print(list_copy) # 输出:[1, 2, 3, 4, 5]
# len() 函数
print(len(list)) # 输出:5
# in 运算符
print(3 in list) # 输出:True
print(10 in list) # 输出:True
print(6 in list) # 输出:False
# not in 运算符
print(6 not in list) # 输出:True
print(3 not in list) # 输出:False列表的遍历
可以使用 for 循环来遍历列表中的元素。
示例:
python
# 列表的遍历
list = [1, 2, 3, 4, 5]
# 遍历元素
print("遍历元素:")
for element in list:
print(element)
# 遍历索引和元素
print("\n遍历索引和元素:")
for index, element in enumerate(list):
print(f"索引 {index}: {element}")
# 遍历索引
print("\n遍历索引:")
for index in range(len(list)):
print(f"索引 {index}: {list[index]}")
# 反向遍历
print("\n反向遍历:")
for element in reversed(list):
print(element)
# 遍历步长
print("\n遍历步长:")
for element in list[::2]:
print(element)列表推导式
列表推导式是一种简洁的创建列表的方法,语法为 [expression for item in iterable if condition]。
示例:
python
# 列表推导式
# 创建一个包含 0 到 9 的列表
list1 = [i for i in range(10)]
print(list1) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 创建一个包含 0 到 9 的平方的列表
list2 = [i**2 for i in range(10)]
print(list2) # 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 创建一个包含 0 到 9 的偶数的列表
list3 = [i for i in range(10) if i % 2 == 0]
print(list3) # 输出:[0, 2, 4, 6, 8]
# 创建一个包含字符串长度的列表
words = ["hello", "world", "python"]
list4 = [len(word) for word in words]
print(list4) # 输出:[5, 5, 6]
# 嵌套列表推导式
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened) # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
# 条件列表推导式
list5 = [i if i % 2 == 0 else -i for i in range(10)]
print(list5) # 输出:[0, -1, 2, -3, 4, -5, 6, -7, 8, -9]列表的嵌套
列表可以嵌套,即一个列表中可以包含其他列表。
示例:
python
# 列表的嵌套
# 创建嵌套列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix) # 输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 访问嵌套列表中的元素
print(matrix[0]) # 输出:[1, 2, 3]
print(matrix[0][0]) # 输出:1
print(matrix[1][2]) # 输出:6
print(matrix[2][1]) # 输出:8
# 修改嵌套列表中的元素
matrix[0][0] = 10
print(matrix) # 输出:[[10, 2, 3], [4, 5, 6], [7, 8, 9]]
# 遍历嵌套列表
print("遍历嵌套列表:")
for row in matrix:
for num in row:
print(num, end=" ")
print()列表的深浅拷贝
浅拷贝
浅拷贝创建一个新列表,但列表中的元素仍然是原列表中元素的引用。
示例:
python
# 浅拷贝
list1 = [1, 2, [3, 4]]
list2 = list1.copy()
# 修改原列表中的不可变元素
list1[0] = 10
print(list1) # 输出:[10, 2, [3, 4]]
print(list2) # 输出:[1, 2, [3, 4]](不受影响)
# 修改原列表中的可变元素
list1[2][0] = 30
print(list1) # 输出:[10, 2, [30, 4]]
print(list2) # 输出:[1, 2, [30, 4]](受影响)深拷贝
深拷贝创建一个新列表,并且递归地拷贝列表中的所有元素。
示例:
python
# 深拷贝
import copy
list1 = [1, 2, [3, 4]]
list2 = copy.deepcopy(list1)
# 修改原列表中的不可变元素
list1[0] = 10
print(list1) # 输出:[10, 2, [3, 4]]
print(list2) # 输出:[1, 2, [3, 4]](不受影响)
# 修改原列表中的可变元素
list1[2][0] = 30
print(list1) # 输出:[10, 2, [30, 4]]
print(list2) # 输出:[1, 2, [3, 4]](不受影响)总结
Python 中的列表是一种非常灵活的数据结构,提供了丰富的方法来操作元素。本章节介绍了列表的创建、访问、修改、方法、遍历、推导式、嵌套和拷贝等内容。掌握这些列表操作对于编写 Python 代码非常重要。