Python 数据容器通用操作学习笔记:从基础到实践
文章目录
在 Python 编程中,列表、元组、字符串、集合、字典是最常用的数据容器。它们在元素个数统计、极值获取、类型转换、排序等操作上有不少通用逻辑,也有各自的特性。今天我们就来系统梳理这些通用操作,帮你更高效地掌握 Python 数据容器的使用。
一、数据容器通用操作总览(附对比表格)
为了让大家更直观地对比不同数据容器的通用操作表现,我们先来看一张总结表格:
| 操作类型 | 列表(list) | 元组(tuple) | 字符串(str) | 集合(set) | 字典(dict) | 注意事项 |
|---|---|---|---|---|---|---|
| 元素个数(len) | len(my_list) |
len(my_tuple) |
len(my_str) |
len(my_set) |
len(my_dict) |
均返回容器内元素/键值对数量 |
| 最大元素(max) | 支持数值/可比较元素的最大值 | 支持数值/可比较元素的最大值 | 按 ASCII 码返回最大字符 | 支持数值/可哈希元素的最大值 | 返回最大的键(key) | 集合元素无序但可比较,字典比较键 |
| 最小元素(min) | 支持数值/可比较元素的最小值 | 支持数值/可比较元素的最小值 | 按 ASCII 码返回最小字符 | 支持数值/可哈希元素的最小值 | 返回最小的键(key) | 同上 |
| 转列表(list()) | 本身就是列表,返回自身 | list(my_tuple) → 元组转列表 |
list(my_str) → 字符串转字符列表 |
list(my_set) → 集合转列表(无序) |
list(my_dict) → 字典转键列表 |
集合转列表后顺序不确定 |
| 转元组(tuple()) | tuple(my_list) → 列表转元组 |
本身就是元组,返回自身 | tuple(my_str) → 字符串转字符元组 |
tuple(my_set) → 集合转元组(无序) |
tuple(my_dict) → 字典转键元组 |
同上 |
| 转字符串(str()) | 转为列表的字符串表示(如"[1,2,3]") | 转为元组的字符串表示(如"(1,2,3)") | 本身就是字符串,返回自身 | 转为集合的字符串表示(如"{1,2,3}") | 转为字典的字符串表示(如"{‘k’:1}") | 仅用于格式转换,非“内容转字符串” |
| 转集合(set()) | set(my_list) → 列表转集合(去重、无序) |
set(my_tuple) → 元组转集合(去重、无序) |
set(my_str) → 字符串转字符集合(去重、无序) |
本身就是集合,返回自身 | set(my_dict) → 字典转键集合 |
集合自动去重且无序 |
| 排序(sorted()) | sorted(my_list) → 列表排序(返回新列表) |
sorted(my_tuple) → 元组转排序后的列表 |
sorted(my_str) → 字符串转排序后的字符列表 |
sorted(my_set) → 集合转排序后的列表 |
sorted(my_dict) → 字典转排序后的键列表 |
排序后返回列表,原容器不变 |
二、逐类操作详解与代码实践
1. 元素个数统计:len() 函数
len() 是 Python 中最基础的内置函数之一,用于统计容器内的元素数量。
列表、元组统计元素个数;
字符串统计字符个数;
集合统计不重复元素个数;
字典统计键值对(key-value)的个数。
my_list = [1,2,3,4,5]
my_tuple = (1,2,3,4,5)
my_str = "abcdefg"
my_set = {1,2,3,4,5}
my_dict = {"key1":1,"key2":2,"key3":3,"key4":4,"key5":5}
print(f"列表元素个数有:{len(my_list)}") # 输出:5
print(f"元组元素个数有:{len(my_tuple)}") # 输出:5
print(f"字符串元素个数有:{len(my_str)}") # 输出:7
print(f"集合元素个数有:{len(my_set)}") # 输出:5
print(f"字典元素个数有:{len(my_dict)}") # 输出:5
2. 最大 / 最小元素获取:max() 与 min() 函数
max() 用于获取容器内的最大元素,min() 用于获取最小元素。需要注意不同容器的比较逻辑:
数值类型(列表、元组、集合)按数值大小比较;
字符串按 ASCII 码 比较(小写字母 ASCII 码大于大写字母,如 ‘a’ > ‘A’);
字典默认比较 键(key)的大小。
# max 最大元素
print(f"列表最大的元素是:{max(my_list)}") # 输出:5
print(f"元组最大的元素是:{max(my_tuple)}") # 输出:5
print(f"字符串最大的元素是:{max(my_str)}") # 输出:'g'(ASCII 码最大)
print(f"集合最大的元素是:{max(my_set)}") # 输出:5
print(f"字典最大的元素是:{max(my_dict)}") # 输出:'key5'(按字符串 ASCII 比较)
# min 最小元素
print(f"列表最小的元素是:{min(my_list)}") # 输出:1
print(f"元组最小的元素是:{min(my_tuple)}") # 输出:1
print(f"字符串最小的元素是:{min(my_str)}") # 输出:'a'(ASCII 码最小)
print(f"集合最小的元素是:{min(my_set)}") # 输出:1
print(f"字典最小的元素是:{min(my_dict)}") # 输出:'key1'(按字符串 ASCII 比较)
3. 类型转换:容器间的相互转换
Python 提供了 list()、tuple()、str()、set() 等内置函数,支持数据容器在类型间的转换。转换时要注意容器的特性(如集合无序、字典仅能转键集合等)。
# 容器转列表
print(f"列表转列表的结果是:{list(my_list)}") # 输出:[1,2,3,4,5]
print(f"元组转列表的结果是:{list(my_tuple)}") # 输出:[1,2,3,4,5]
print(f"字符串转列表的结果是:{list(my_str)}") # 输出:['a','b','c','d','e','f','g']
print(f"集合转列表的结果是:{list(my_set)}") # 输出:[1,2,3,4,5](集合无序,每次顺序可能不同)
print(f"字典转列表的结果是:{list(my_dict)}") # 输出:['key1','key2','key3','key4','key5']
# 容器转元组
print(f"列表转元组的结果是:{tuple(my_list)}") # 输出:(1,2,3,4,5)
print(f"元组转元组的结果是:{tuple(my_tuple)}") # 输出:(1,2,3,4,5)
print(f"字符串转元组的结果是:{tuple(my_str)}") # 输出:('a','b','c','d','e','f','g')
print(f"集合转元组的结果是:{tuple(my_set)}") # 输出:(1,2,3,4,5)(无序)
print(f"字典转元组的结果是:{tuple(my_dict)}") # 输出:('key1','key2','key3','key4','key5')
# 容器转字符串
print(f"列表转字符串的结果是:{str(my_list)}") # 输出:'[1, 2, 3, 4, 5]'
print(f"元组转字符串的结果是:{str(my_tuple)}") # 输出:'(1, 2, 3, 4, 5)'
print(f"字符串转字符串的结果是:{str(my_str)}") # 输出:'abcdefg'
print(f"集合转字符串的结果是:{str(my_set)}") # 输出:'{1, 2, 3, 4, 5}'
print(f"字典转字符串的结果是:{str(my_dict)}") # 输出:"{'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4, 'key5': 5}"
# 容器转集合
print(f"列表转集合的结果是:{set(my_list)}") # 输出:{1,2,3,4,5}(去重,若列表有重复元素则自动去重)
print(f"元组转集合的结果是:{set(my_tuple)}") # 输出:{1,2,3,4,5}
print(f"字符串转集合的结果是:{set(my_str)}") # 输出:{'a','b','c','d','e','f','g'}(字符去重,无序)
print(f"集合转集合的结果是:{set(my_set)}") # 输出:{1,2,3,4,5}
print(f"字典转集合的结果是:{set(my_dict)}") # 输出:{'key1','key2','key3','key4','key5'}(仅转键)
注意:列表、元组、字符串、集合无法直接转字典,因为字典需要 “键值对” 结构,而这些容器没有天然的键值映射关系。
4. 排序操作:sorted() 函数
sorted() 是 Python 内置的排序函数,可对可迭代对象(列表、元组、字符串、集合、字典等)进行排序,返回一个新的列表(原容器不会被修改)。通过 reverse=True 可实现降序排序。
my_list = [3,2,1,4,5]
my_tuple = (3,2,1,4,5)
my_str = "dbceafg"
my_set = {3,2,1,4,5}
my_dict = {"key1":3,"key2":2,"key3":1,"key4":4,"key5":5}
print(f"列表对象的排序结果:{sorted(my_list, reverse=True)}") # 输出:[5,4,3,2,1]
print(f"元组对象的排序结果:{sorted(my_tuple, reverse=True)}") # 输出:[5,4,3,2,1](元组转列表后排序)
print(f"字符串对象的排序结果:{sorted(my_str, reverse=True)}") # 输出:['g','f','e','d','c','b','a'](按 ASCII 降序)
print(f"集合对象的排序结果:{sorted(my_set, reverse=True)}") # 输出:[5,4,3,2,1](集合转列表后排序)
print(f"字典对象的排序结果:{sorted(my_dict, reverse=True)}") # 输出:['key5','key4','key3','key2','key1'](按键的 ASCII 降序)
5. 字符串大小比较:ASCII 码的应用
字符串的大小比较是按位逐个比较 ASCII 码的,只要某一位的 ASCII 码更大,整体字符串就更大。常见场景包括:
字母大小写比较(小写字母 ASCII 码 > 大写字母,如 ‘a’ > ‘A’);
字符串前缀比较(如 ‘abd’ > ‘abc’,因为第三位 ‘d’ > ‘c’);
字典键的比较(本质是字符串 ASCII 码比较)。
# 字符串按位比较示例
print(f"abd大于abc,结果是:{'abd' > 'abc'}") # 输出:True
print(f"ab大于a,结果是:{'ab' > 'a'}") # 输出:True
print(f"a大于A,结果是:{'a' > 'A'}") # 输出:True
print(f"key1大于key2,结果是:{'key1' > 'key2'}") # 输出:False('1'的 ASCII 码小于'2')
三、总结与学习建议
掌握这些通用操作,能帮你在处理不同数据容器时举一反三。学习时建议结合代码实践,多尝试修改容器内的元素(如给列表加重复值、给字符串换不同字符),观察操作结果的变化,从而更深刻地理解它们的特性。
比如,你可以试试 “给列表加入重复元素后转集合,再转列表”,看看元素是否去重;或者 “用不同大小写的字符串测试 max() 和 min()”,验证 ASCII 码的比较逻辑。
通过这种 “实践 + 总结” 的方式,你对 Python 数据容器的掌握会越来越扎实~
更多推荐



所有评论(0)