❝Python入门第十二课,主要是对数据容器的做个总结,以及相互转换的通用操作函数的学习。
通用内置函数
在之前数据容器系列文章中已经介绍过下面图中常用函数,不过还是要根据实际应用场景选择合适的函数使用:

下面继续介绍一些数据容器的通用操作,主要是类型之间的相互转换。
list函数
list函数有如下两个作用:
res5 = list()print(type(res5), res5) # <class 'list'> []
data_range = range(5) # <class 'range'> range(0, 5)data_str = '欢迎大家都来学Python'# <class 'str'>data_set = {10, 20, 30, 40, 50} # <class 'set'>data_dict = { '张三': 75, '李四': 60, '王五': 85 } # <class 'dict'>res1 = list(data_range)print(type(res1), res1) # <class 'list'> [0, 1, 2, 3, 4]res2 = list(data_str)print(type(res2), res2) # <class 'list'> ['欢', '迎', '大', '家', '都', '来', '学', 'P', 'y', 't', 'h', 'o', 'n']res3 = list(data_set)print(type(res3), res3) # <class 'list'> [50, 20, 40, 10, 30]res4 = list(data_dict.items())print(type(res4), res4) # <class 'list'> [('张三', 75), ('李四', 60), ('王五', 85)]
tuple函数
tuple函数有如下两个作用:
res5 = tuple()print(type(res5), res5) # <class 'tuple'> ()
data_range = range(5) # <class 'range'> range(0, 5)data_str = '欢迎大家都来学Python'# <class 'str'>data_set = {10, 20, 30, 40, 50} # <class 'set'>data_dict = {'张三': 75, '李四': 60, '王五': 85} # <class 'dict'>res1 = tuple(data_range)print(type(res1), res1) # <class 'tuple'> (0, 1, 2, 3, 4)res2 = tuple(data_str)print(type(res2), res2) # <class 'tuple'> ('欢', '迎', '大', '家', '都', '来', '学', 'P', 'y', 't', 'h', 'o', 'n')res3 = tuple(data_set)print(type(res3), res3) # <class 'tuple'> (50, 20, 40, 10, 30)res4 = tuple(data_dict)print(type(res4), res4) # <class 'tuple'> ('张三', '李四', '王五')
set函数
set函数有如下两个作用:
res5 = set()print(type(res5), res5) # <class 'set'> set()
data_range = range(5) # <class 'range'> range(0, 5)data_str = '欢迎大家都来学Python'# <class 'str'>data_list = [10, 20, 30, 40, 50] # <class 'list'>data_dict = {'张三': 75, '李四': 60, '王五': 85} # <class 'dict'>res1 = set(data_range)print(type(res1), res1) # <class 'set'> {0, 1, 2, 3, 4}res2 = set(data_str)print(type(res2), res2) # <class 'set'> {'n', 't', '都', '迎', '学', '欢', 'P', 'o', '大', '来', 'y', '家', 'h'}res3 = set(data_list)print(type(res3), res3) # <class 'set'> {40, 10, 50, 20, 30}res4 = set(data_dict)print(type(res4), res4) # <class 'set'> {'王五', '李四', '张三'}
str函数
str函数有如下两个作用:
res8 = str()print(type(res8), res8) # <class 'str'>
data_range = range(5) # <class 'range'> range(0, 5)data_list = [10, 20, 30, 40, 50] # <class 'list'>data_set = {10, 20, 30, 40, 50} # <class 'set'>data_dict = { '张三': 75, '李四': 60, '王五': 85 } # <class 'dict'>data_bool = False# <class 'bool'>data_none = None# <class 'NoneType'>data_int = 100# <class 'int'>res1 = str(data_range)print(type(res1), res1) # <class 'str'> range(0, 5)res2 = str(data_list)print(type(res2), res2) # <class 'str'> [10, 20, 30, 40, 50]res3 = str(data_set)print(type(res3), res3) # <class 'str'> {50, 20, 40, 10, 30}res4 = str(data_dict)print(type(res4), res4) #<class 'str'> {'张三': 75, '李四': 60, '王五': 85}res5 = str(data_bool)print(type(res5), res5) # <class 'str'> Falseres6 = str(data_none)print(type(res6), res6) # <class 'str'> Noneres7 = str(data_int)print(type(res7), res7) # <class 'str'> 100
dict函数
dict函数有如下两个作用:
res5 = dict()print(type(res5), res5) # <class 'dict'> {}
- 将可迭代对象转换为字典(注意:交给dict函数的内容必须是键值对才可以,否则就会报错)
data1 = {'张三': 75, '李四': 60, '王五':85} # <class 'dict'>data2 = [('张三', 75), ('李四', 60), ('王五', 85)] # <class 'list'>data3 = (('张三', 75), ('李四', 60), ('王五', 85)) # <class 'tuple'>data4 = {('张三', 75), ('李四', 60), ('王五', 85)} # <class 'set'>res1 = dict(data1)print(type(res1), res1) # <class 'dict'> {'张三': 75, '李四': 60, '王五': 85}res2 = dict(data2)print(type(res2), res2) # <class 'dict'> {'张三': 75, '李四': 60, '王五': 85}res3 = dict(data3)print(type(res3), res3) # <class 'dict'> {'张三': 75, '李四': 60, '王五': 85}res4 = dict(data4)print(type(res4), res4) # <class 'dict'> {'李四': 60, '张三': 75, '王五': 85}
成员运算符 in / not in
所有数据容器都支持成员运算符in / not in,它的作用是:判断某个元素是否在于容器中。
data_list = [10, 20, 30, 40, 50] # <class 'list'>data_tuple = (10, 20, 30, 40, 50) # <class 'tuple'>data_set = {10, 20, 30, 40, 50} # <class 'set'>data_dict = {'张三': 75, '李四': 60, '王五': 85} # <class 'dict'>data_str = '欢迎大家都来学Python'# <class 'str'>print('100'notin data_list) # Trueprint('100'notin data_tuple) # Trueprint('100'notin data_set) # Trueprint('赵六'notin data_dict) # Trueprint('Python5'notin data_str) # Trueprint()print(10in data_list) # Trueprint(10in data_tuple) # Trueprint(10in data_set) # Trueprint('王五'in data_dict) # Trueprint('Py'in data_str) # True
数据容器总结
下面对数据容器从以下维度进行对比总结:
有序 VS 无序
- 有序:列表(list)、元组(tuple)、字符串(str)——元素有顺序,可通过下标访问元素。
- 无序:集合(set)、字典(dict)——元素没有固定位置,不能用下标访问。
是否可修改
- 可变:列表(list)、集合(set)、字典(dict)——可以对内容进行增、删、改操作。
- 不可变:元组(tuple)、字符串(str)——内容固定,创建后无法修改。
是否可重复
- 可重复:列表(list)、元组(tuple)、字符串(str)
- 不可重复:集合(set)、字典(dict,字典的key是唯一的,但value是可重复的)。
❝至此,数据容器就学习完了,收获满满,下一步开始学习面向对象。