六大数据类型间的转换
一、其他数据类型转换成数字
只有特殊的字符串才能转换成数字类型.如下:
- 纯数字组成的字符串可以转换成 int flaot bool
- 'True','False' 字符串比较特殊。可以转换成 bool
- '5+6j' 形如复数格式的字符串可以转换成 complex bool
- '20.333' 形如小树的字符串可以转换成 flaot bool
a = '33'
b = '33.333'
c = '5+6j'
d = 'True'
a = int(a) # 也可以eval(a)
b = float(b)
c = complex(c)
d = bool(d)
print(a, type(a))
print(b, type(b))
print(c, type(c))
print(d, type(d))
打印结果:
33 <class 'int'>
33.333 <class 'float'>
(5+6j) <class 'complex'>
True <class 'bool'>
二、其他数据类型转换成字符串
数字、 列表、 元组、 集合、 字典都能转换成字符串
a = str(33)
b = str(33.33)
c = str(5 + 6j)
d = str(True)
e = str([1, 2, '3'])
f = str((1, '2', ()))
g = str({1: 2, 3: 4})
h = str({1, 2, 3, '4'})
print(a, type(a))
print(b, type(b))
print(c, type(c))
print(d, type(d))
print(e, type(e))
print(f, type(f))
print(g, type(g))
print(h, type(h))
打印结果:
33 <class 'str'>
33.33 <class 'str'>
(5+6j) <class 'str'>
True <class 'str'>
[1, 2, '3'] <class 'str'>
(1, '2', ()) <class 'str'>
{1: 2, 3: 4} <class 'str'>
{'4', 1, 2, 3} <class 'str'>
三、其他数据类型转换成列表
除了数字不能转换成列表。其他的数据类型都可以。
- 字符串转换成列表,会把每一个字符作为一项加入到新列表
- 元组转换成列表,会把每一个元素作为一项加入到新列表
- 字典转换成列表。是把字典的第一层key作为新列表的元素。所以字典存在多层嵌套的方式。其他层级的key会直接舍弃
- 集合转换成列表。也是把集合的每一个元素作为一项加入到新列表
a = list('1+2j')
b = list(('a', 'b'))
c = list({1: 2, 3: {4: 5}})
d = list({1, 2, 3, '4'})
e = eval('[1,2,3,4]')
print(a, type(a))
print(b, type(b))
print(c, type(c))
print(d, type(d))
print(e, type(e))
打印结果:
['1', '+', '2', 'j'] <class 'list'>
['a', 'b'] <class 'list'>
[1, 3] <class 'list'>
[1, 2, 3, '4'] <class 'list'>
[1, 2, 3, '4'] <class 'list'>
四、其他数据类型转换成元组
其他数据类型转换成元组 和 列表基本一致。也是数字不能转换成元组
- 字符串转换成元组,会把每一个字符作为一项加入到新元组
- 列表转换成元组,会把每一个元素作为一项加入到新元组
- 字典转换成元组。是把字典的第一层key作为新元组的元素。所以字典存在多层嵌套的方式。其他层级的key会直接舍弃
- 集合转换成元组。也是把集合的每一个元素作为一项加入到新元组
a = tuple('1+2j')
b = tuple(['a', 'b',{1: 2, 3: {4: 5}}])
c = tuple({1: 2, 3: {4: 5}})
d = tuple({1, 2, 3, '4'})
e = eval('(1,2,3)')
print(a, type(a))
print(b, type(b))
print(c, type(c))
print(d, type(d))
print(e, type(e))
打印结果:
('1', '+', '2', 'j') <class 'tuple'>
('a', 'b', {1: 2, 3: {4: 5}}) <class 'tuple'>
(1, 3) <class 'tuple'>
('4', 1, 2, 3) <class 'tuple'>
(1, 2, 3) <class 'tuple'>
五、其他数据类型转换成字典
除了数字,其他类型都能转换成字典
- 字符串转换字典。形如字典格式的字符串都能转换成字典
- 列表转换成字典。因为字典都是key value 组成的。所以必须要有2个列表。前一个列表元素为key 后一个列表的元素为value 一一对应关系。有且key 和 value 都存在时。才能转换成有效的字典项。
- 元组转换成字典。和列表转换成字典原理一致
- 集合转换成字典。集合因为是无序的。所以在转换key 和 value 的时候。2个集合不是一一对应的关系。而是前一个集合随机取一个元素作为key 在随机在后面的集合中取一个元素做为value
a = eval('{1: 2, 3: {4:5}}')
b = dict(zip([1, 2, 3], [11, 22]))
c = dict(zip((1, 2, 3), (11, 22, 33,44)))
d = dict(zip({1, 2, 3, '4'}, {11, 22}))
print(a, type(a))
print(b, type(b))
print(c, type(c))
print(d, type(d))
打印结果:
{1: 2, 3: {4: 5}} <class 'dict'>
{1: 11, 2: 22} <class 'dict'>
{1: 11, 2: 22, 3: 33} <class 'dict'>
{'4': 11, 1: 22} <class 'dict'>
六、其他元素转换成集合
除了数字都能转换成集合
- 字符串转换成集合。会把每一个字符作为一项加入到新集合
- 列表转换成集合。会把列表的每一个元素作为一项加入到新集合。(集合是不包含可变数据类型。所以列表里面不能包含 列表集合 字典)
- 元组转换成集合。会把元组的每一个元素作为一项加入到新集合。(集合是不包含可变数据类型。所以元组里面不能包含 列表集合 字典)
- 字典转换成集合。会把字典的第一层key作为的每一个元素作为一项加入到新集合。
a = set('1+2j')
b = set([1, 2, 3])
c = set((1, 2, 3))
d = set({1: 2, 3: 4})
e = eval('{1,2,3}')
print(a, type(a))
print(b, type(b))
print(c, type(c))
print(d, type(d))
print(e, type(e))
打印结果:
{'2', '+', '1', 'j'} <class 'set'>
{1, 2, 3} <class 'set'>
{1, 2, 3} <class 'set'>
{1, 3} <class 'set'>
{1, 2,3} <class 'set'>