























在 Python 3 中,list(列表)是一种非常基础且常用的可变序列类型,用于存储一系列有序的元素。下面从基本特性、常用操作、性能及注意事项等方面进行介绍。
for 循环、列表推导式等迭代操作。# 空列表
empty = []
# 带初始值
numbers = [1, 2, 3]
mixed = [1, "hello", 3.14, [4, 5]]
# 使用 list() 构造函数
chars = list("abc") # ['a', 'b', 'c']
ranged = list(range(5)) # [0, 1, 2, 3, 4]
# 列表推导式
squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
lst = [10, 20, 30, 40]
print(lst[0]) # 10
print(lst[-1]) # 40(负索引从末尾开始)
# 修改元素
lst[1] = 25 # [10, 25, 30, 40]
# 切片(返回新列表)
sub = lst[1:3] # [25, 30]
lst = [1, 2]
lst.append(3) # [1, 2, 3](末尾追加)
lst.extend([4, 5]) # [1, 2, 3, 4, 5](合并列表)
lst.insert(1, 99) # [1, 99, 2, 3, 4, 5](指定位置插入)
lst = [10, 20, 30, 20]
lst.remove(20) # 删除第一个值为20的元素 -> [10, 30, 20]
popped = lst.pop() # 弹出并返回最后一个元素(pop(0)可弹出第一个)
del lst[0] # 删除索引0处的元素
lst.clear() # 清空列表
lst = [5, 2, 9, 2]
lst.index(2) # 返回第一个2的索引 -> 1
lst.count(2) # 2
2 in lst # True
lst = [3, 1, 4]
lst.sort() # 原地升序 -> [1, 3, 4]
lst.sort(reverse=True) # 原地降序 -> [4, 3, 1]
lst.reverse() # 原地反转 -> [1, 3, 4]
# 不修改原列表,返回新列表
sorted(lst) # 升序新列表
list(reversed(lst)) # 反转后的新列表
a = [1, 2, [3, 4]]
b = a.copy() # 浅拷贝(内层列表仍是引用)
import copy
c = copy.deepcopy(a) # 深拷贝(完全独立)
| 操作 | 平均情况 | 说明 |
|---|---|---|
lst[i] (索引) |
O(1) | |
lst.append(x) |
O(1) | 偶尔需要扩容,但均摊为O(1) |
lst.pop() |
O(1) | 弹出末尾元素 |
lst.pop(i) / insert(i, x) |
O(n) | 需要移动后续元素 |
del lst[i] |
O(n) | |
x in lst |
O(n) | 线性搜索 |
lst.sort() |
O(n log n) | 使用 Timsort 算法 |
切片 lst[a:b] |
O(k) | k = b-a,产生新列表 |
一种简洁、高效的生成列表的方式:
# 普通写法
squares = []
for x in range(10):
squares.append(x**2)
# 列表推导式
squares = [x**2 for x in range(10)]
# 带条件
evens = [x for x in range(20) if x % 2 == 0]
# 嵌套循环
pairs = [(x, y) for x in [1,2] for y in [3,4]]
copy() 或 list() 只复制引用,修改内层对象会影响原列表。def f(lst=[])),多次调用会共享同一个列表对象。append() 和 pop() 可实现栈(LIFO)。若需要高效队列(FIFO),请使用 collections.deque,因为列表的 pop(0) 是 O(n)。array.array 或 numpy.ndarray 节省空间。| 类型 | 可变性 | 元素类型限制 | 适用场景 |
|---|---|---|---|
list |
可变 | 任意 | 通用有序集合 |
tuple |
不可变 | 任意 | 不可变的数据集合,字典键 |
array.array |
可变 | 单一数值类型 | 内存紧凑,数值运算轻量 |
numpy.ndarray |
可变 | 单一数值类型 | 科学计算,向量化操作 |
list 是 Python 中最灵活、最常用的序列容器,适合存储有序且需要频繁修改的任意数据。deque,数值数组用 array 或 numpy)。此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。