Python 列表、元组、集合的特点及转换规则

张开发
2026/6/23 0:53:57 15 分钟阅读
Python 列表、元组、集合的特点及转换规则
使用表格总结 Python 中的列表 元组 集合 的特点及转换规则Python数据结构特性及转换规则本文对比了Python中列表、元组和集合三大数据结构的核心特性及转换规则。列表为可变有序序列元组为不可变有序序列集合为可变无序不重复容器。三者可通过list()、tuple()、set()相互转换但需注意列表/元组转集合会去重且丢失顺序集合转列表/元组顺序不确定元组可哈希可用作字典键列表和集合不可集合元素必须可哈希不能包含可变对象转换示例列表转元组tuple([1,2])→(1,2)元组转集合set((1,2,2))→{1,2}集合转列表list({1,2})→[1,2]应用场景频繁增删改列表数据保护元组去重/快速查找集合Python 列表、元组、集合的特点及转换规则一、核心特点对比表特性列表 (List)元组 (Tuple)集合 (Set)语法符号[1, 2, 3](1, 2, 3){1, 2, 3}是否可变✅ 可变❌ 不可变✅ 可变是否有序✅ 有序✅ 有序❌ 无序是否允许重复元素✅ 允许✅ 允许❌ 不允许索引/切片操作✅ 支持✅ 支持❌ 不支持哈希性❌ 不可哈希✅ 可哈希❌ 不可哈希元素类型要求任意类型任意类型必须可哈希内存占用较大较小最大创建速度较慢较快较慢查询速度O(n)O(n)O(1)适用场景频繁增删改查的序列不需要改变的数据序列去重、集合运算二、详细特性说明表操作列表 (List)元组 (Tuple)集合 (Set)添加元素append(),insert()❌ 不支持add()删除元素remove(),pop(),del❌ 不支持remove(),discard(),pop()修改元素lst[0] new_value❌ 不支持❌ 不支持需先删除再添加查找元素index()index()只能通过in判断排序sort()或sorted()sorted()返回列表sorted()返回列表反转reverse()❌ 不支持❌ 不支持元素访问通过索引lst[0]通过索引tup[0]❌ 不能通过索引切片lst[1:3]tup[1:3]❌ 不支持重复运算[1,2] * 3(1,2) * 3❌ 不支持连接运算[1,2] [3,4](1,2) (3,4)union()或|三、类型转换规则表3.1 转换为列表list()源类型转换结果示例说明元组 → 列表元素相同的新列表list((1,2,3))→[1,2,3]顺序保持不变集合 → 列表元素相同的新列表list({1,2,3})→[1,2,3]⚠️ 顺序不确定字符串 → 列表字符列表list(abc)→[a,b,c]每个字符成独立元素字典 → 列表键的列表list({a:1,b:2})→[a,b]只转换键范围 → 列表数字列表list(range(3))→[0,1,2]展开范围对象3.2 转换为元组tuple()源类型转换结果示例说明列表 → 元组元素相同的新元组tuple([1,2,3])→(1,2,3)顺序保持不变集合 → 元组元素相同的新元组tuple({1,2,3})→(1,2,3)⚠️ 顺序不确定字符串 → 元组字符元组tuple(abc)→(a,b,c)每个字符成独立元素字典 → 元组键的元组tuple({a:1,b:2})→(a,b)只转换键范围 → 元组数字元组tuple(range(3))→(0,1,2)展开范围对象3.3 转换为集合set()源类型转换结果示例说明列表 → 集合去重后的集合set([1,2,2,3])→{1,2,3}⚠️ 自动去重顺序丢失元组 → 集合去重后的集合set((1,2,2,3))→{1,2,3}⚠️ 自动去重顺序丢失字符串 → 集合字符集合set(abac)→{a,b,c}去重顺序不确定字典 → 集合键的集合set({a:1,b:2})→{a,b}只转换键范围 → 集合数字集合set(range(3))→{0,1,2}展开范围对象3.4 转换注意事项表转换操作是否可行限制条件示例列表 ↔ 元组✅ 总是可行无list((1,2))→[1,2]列表 ↔ 集合✅ 总是可行⚠️ 集合会去重、丢失顺序set([1,2,2])→{1,2}元组 ↔ 集合✅ 总是可行⚠️ 集合会去重、丢失顺序set((1,2,2))→{1,2}列表/元组 → 字典⚠️ 有条件必须是键值对序列dict([(1,2),(3,4)])→{1:2,3:4}集合 → 字典⚠️ 有条件集合元素必须是键值对dict({(1,2),(3,4)})→{1:2,3:4}包含可变元素的元组 → 集合❌ 不可行可变元素不可哈希set(([1,2],3))→ TypeError包含列表的列表 → 集合❌ 不可行列表不可哈希set([[1,2],3])→ TypeError四、实际应用场景选择表需求场景推荐类型原因需要频繁增删改列表可变且有丰富的方法数据需要保护不被修改元组不可变更安全需要快速成员检测集合O(1) 时间复杂度需要去重集合自动去重需要记录顺序列表或元组有序需要作为字典的键元组可哈希需要数学集合运算集合支持并交差运算从函数返回多个值元组轻量且不可变配置文件数据元组防止意外修改数据序列化列表或元组JSON 友好五、转换示例代码python# 1. 列表 ↔ 元组 lst [1, 2, 3, 3] tup tuple(lst) # (1, 2, 3, 3) lst2 list(tup) # [1, 2, 3, 3] # 2. 列表 ↔ 集合 lst [1, 2, 2, 3] st set(lst) # {1, 2, 3} (去重顺序丢失) lst2 list(st) # [1, 2, 3] (顺序可能不同) # 3. 元组 ↔ 集合 tup (1, 2, 2, 3) st set(tup) # {1, 2, 3} tup2 tuple(st) # (1, 2, 3) # 4. 字符串 → 列表/元组/集合 s hello lst list(s) # [h, e, l, l, o] tup tuple(s) # (h, e, l, l, o) st set(s) # {h, e, l, o} # 5. 列表/元组 → 字符串特殊转换 lst [a, b, c] s .join(lst) # abc (元素必须是字符串) tup (a, b, c) s -.join(tup) # a-b-c # 6. 字典 ↔ 列表/元组/集合 d {a: 1, b: 2} keys_list list(d) # [a, b] values_list list(d.values()) # [1, 2] items_list list(d.items()) # [(a, 1), (b, 2)] # 反向转换列表 → 字典 lst [(a, 1), (b, 2)] d dict(lst) # {a: 1, b: 2}六、关键注意事项总结表注意事项列表元组集合空对象创建[]()set()注意{}是空字典单元素创建[1](1,)必须有逗号{1}作为字典键❌✅❌作为集合元素❌✅❌元素类型要求任意任意必须是不可变类型嵌套可变对象✅ 允许⚠️ 允许但需谨慎❌ 不允许七、性能对比表操作列表元组集合创建慢快慢访问O(1)O(1)O(1)查找O(n)O(n)O(1)插入O(n) 或 O(1)❌O(1)删除O(n)❌O(1)内存占用中等小大这个表格总结涵盖了列表、元组和集合的所有核心特性和转换规则

更多文章