Python 列表函数
上次修改时间:2025 年 4 月 11 日
本综合指南探讨 Python 的 list
函数,该函数创建可变序列对象。我们将介绍列表的创建、转换和实际操作示例。
基本定义
list
函数构造一个新的列表对象。它可以创建空列表或将其他可迭代对象转换为列表。列表是有序的、可变的集合,允许重复的元素。
主要特征:方括号语法、从零开始的索引、可变长度、异构元素以及许多用于操作的内置方法。
创建空列表
list
最简单的用法是创建一个空列表。此示例显示初始化空列表和预填充列表的不同方法。
# Empty list creation empty1 = list() empty2 = [] print(empty1) # [] print(empty2) # [] print(type(empty1)) # <class 'list'> # Pre-populated list numbers = list([1, 2, 3]) print(numbers) # [1, 2, 3]
此示例演示了创建空列表的两种方法。对于空列表,list()
构造函数和方括号 []
是等效的。
类型检查确认我们正在使用列表对象。最后一个例子展示了如何创建一个带有初始值的列表。
转换其他可迭代对象
list
可以将各种可迭代类型转换为列表。此示例显示了从元组、字符串、范围和字典的转换。
# From tuple tup = (1, 2, 3) lst1 = list(tup) print(lst1) # [1, 2, 3] # From string s = "hello" lst2 = list(s) print(lst2) # ['h', 'e', 'l', 'l', 'o'] # From range r = range(5) lst3 = list(r) print(lst3) # [0, 1, 2, 3, 4] # From dictionary (keys) d = {'a': 1, 'b': 2} lst4 = list(d) print(lst4) # ['a', 'b']
list
构造函数接受任何可迭代对象。对于字典,默认情况下它使用键。字符串被拆分为单个字符。
当您需要其他序列的可变版本或想要保留迭代结果时,这非常有用。
列表推导式与 list
将 list
与生成器表达式结合使用可以创建强大的单行代码。此示例演示了过滤和转换数据。
numbers = range(10) # Even numbers squared evens_squared = list(x**2 for x in numbers if x % 2 == 0) print(evens_squared) # [0, 4, 16, 36, 64] # Convert temperatures fahrenheit = [32, 68, 104] celsius = list((f - 32) * 5/9 for f in fahrenheit) print(celsius) # [0.0, 20.0, 40.0]
第一个例子过滤偶数并对其进行平方。第二个例子将华氏温度转换为摄氏温度。两者都在 list()
内部使用生成器表达式。
这种模式具有内存效率,因为它一次处理一项,而无需创建中间列表。
嵌套列表和矩阵
列表可以包含其他列表,从而实现矩阵结构。此示例显示了嵌套列表的创建和访问。
# 3x3 matrix matrix = list([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) print(matrix[1][2]) # 6 (second row, third column) # Flatten matrix flat = list(num for row in matrix for num in row) print(flat) # [1, 2, 3, 4, 5, 6, 7, 8, 9] # Transpose matrix transposed = list(list(row) for row in zip(*matrix)) print(transposed) # [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
矩阵示例显示了嵌套列表的创建。我们使用双重索引访问元素。扁平化示例使用嵌套生成器表达式。
转置使用 zip
与解包来交换行和列,展示了高级列表操作。
复制列表
此示例探讨了复制列表的不同方式及其含义。理解这些差异可以防止意外行为。
original = [1, [2, 3], 4] # Shallow copy shallow = list(original) shallow[1][0] = 'changed' # Deep copy import copy deep = copy.deepcopy(original) deep[1][0] = 'unchanged' print(original) # [1, ['changed', 3], 4] print(shallow) # [1, ['changed', 3], 4] print(deep) # [1, ['unchanged', 3], 4]
list
构造函数创建浅拷贝。嵌套对象在原始对象和副本之间共享。深拷贝创建完全独立的副本。
这演示了何时使用每种方法。浅拷贝速度更快,但深拷贝对于嵌套结构更安全。
最佳实践
- 对于空列表,首选 []: 比 list() 更易读
- 使用 list() 进行转换: 当转换其他可迭代对象时
- 考虑推导式: 用于可读的转换
- 注意副本: 了解浅拷贝与深拷贝
- 记录复杂结构: 尤其是对于嵌套列表
资料来源
作者
列出所有 Python 教程。