Python3 的列表(List)是处理有序可变数据的核心数据结构,以下是基于历史对话和搜索结果的系统化整理:
一、基础特性
-
定义与创建
- 使用方括号
[]
创建,元素以逗号分隔,支持混合数据类型(如整型、字符串、甚至嵌套列表)。my_list = [1, 'a', True, [2, 3]] # 创建混合类型列表
- 可变性:列表内容可动态修改,内存地址不变。
- 使用方括号
-
索引与切片
- 正向索引:从
0
开始(如my_list[0]
获取第一个元素)。 - 反向索引:
-1
表示最后一个元素(如my_list[-1]
获取末位元素)。 - 切片语法:
list[start:end:step]
,左闭右开区间(如my_list[1:3]
截取第2-3个元素)。
- 正向索引:从
二、核心操作
-
增删改查
| 操作类型 | 方法/语法 | 说明 |
|----------------|-------------------------------|----------------------------------------------------------------------|
| 添加元素 |append(obj)
| 末尾追加单个元素(如my_list.append(4)
) |
| |extend(iterable)
| 批量追加多个元素(如my_list.extend([5,6])
) |
| |insert(index, obj)
| 指定位置插入元素(如my_list.insert(1, 'new')
) |
| 删除元素 |remove(obj)
| 删除首个匹配项(如my_list.remove('a')
) |
| |pop([index])
| 移除并返回指定位置元素(默认末尾) |
| |del list[index]
| 直接删除索引位置元素(如del my_list[0]
) |
| 修改元素 |list[index] = new_value
| 直接通过索引赋值(如my_list[2] = False
) | -
排序与组织
- 永久排序:
sort(reverse=False)
(如my_list.sort()
升序排列)。 - 临时排序:
sorted(list)
返回新列表,原列表不变。 - 反转列表:
reverse()
或切片list[::-1]
(前者修改原列表,后者生成新列表)。
三、常用方法与特性
-
内置函数
len(list)
:获取元素个数(如len([1,2,3])
→ 3)。max(list)
/min(list)
:数值列表求极值(需元素类型一致)。list.count(obj)
:统计元素出现次数(如[1,2,2].count(2)
→ 2)。
-
成员检测
in
/not in
:判断元素是否存在(如'a' in my_list
)。
-
列表生成式
- 简化创建逻辑(如
[x2 for x in range(5)]
→[0,1,4,9,16]
)。
- 简化创建逻辑(如
四、高级特性与注意事项
-
嵌套列表
- 支持多维结构(如矩阵
matrix = [[1,2], [3,4]]
),通过matrix[0][1]
访问元素。
- 支持多维结构(如矩阵
-
性能优化
- 避免频繁扩展列表,优先预分配空间(如用
[None] * n
初始化)。 - 拼接大量数据时,
extend()
比+=
更高效。
- 避免频繁扩展列表,优先预分配空间(如用
-
浅拷贝与深拷贝
- 直接赋值是引用,需用
copy()
或list.copy()
浅拷贝,嵌套结构需copy.deepcopy()
。
- 直接赋值是引用,需用
五、与其他结构的对比
特性 | 列表(List) | 元组(Tuple) | 集合(Set) |
---|---|---|---|
可变性 | ✔️ | ❌ | ✔️(元素唯一) |
有序性 | ✔️ | ✔️ | ❌ |
语法 | [] | () | {} 或 set() |
典型用途 | 动态数据集合 | 不可变数据(如坐标) | 去重、成员快速检测 |
示例代码
列表综合操作示例
fruits = ['apple', 'banana', 'cherry']
fruits.append('orange') # 末尾添加 → ['apple', 'banana', 'cherry', 'orange']
fruits.insert(1, 'grape') # 插入 → ['apple', 'grape', 'banana', 'cherry', 'orange']
fruits.remove('banana') # 删除 → ['apple', 'grape', 'cherry', 'orange']
sorted_fruits = sorted(fruits) # 临时排序 → ['apple', 'cherry', 'grape', 'orange']
列表生成式创建偶数列表
even_numbers = [x for x in range(10) if x%2 == 0] # → [0, 2, 4, 6, 8]
完整列表操作文档可参考 [Python 官方文档] 或 。