六大数据类型间的转换

一、其他数据类型转换成数字

只有特殊的字符串才能转换成数字类型.如下:

  • 纯数字组成的字符串可以转换成 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'>