python 全面介绍列表、元组、字符串、字典、集合之间的相互转化
开头语
本文是关于python语言中的序列数据结构的相互转化的方法
主要列举了在不同情况下,列表、元组、字符串、字典、集合之间的相互转化技巧。
列表
列表最常用, 首先讲列表转化到其他数据结构的各种情况。
列表转化为元组
#列表转化为元组
list1 = [23333,"hello",[1,2,3],"God "]
print(tuple(list1))
输出结果如下:
(23333, 'hello', [1, 2, 3], 'God ')
列表转化为字符串
#列表转化为字符串
list2 = ["hello",",","world","!"]
#情况一,列表每个元素必须均为字符串类型
print(" ".join(list2)) #string.join(seq)方法作用:以string作为分隔符,将seq中所有的元素(每个元素必须均为字符串类型)合并为一个新的字符串
#情况二
print(str(list2)) #将list2直接转化为字符串,简单地说直接在列表的首尾加上引号
输出结果如下:
hello , world !
['hello', ',', 'world', '!']
列表转化为字典
#列表转化为字典
#情况一,一个列表转化为字典
list3 = [(23333, 'hello'), ('hello', ','), ('[1,2,3]', 'world'), ('God ', '!')]
print(dict(list3))
#情况二,两个列表转化为字典
list1 = [23333,"hello","[1,2,3]","God "]
list2 = ["hello",",","world","!"]
print(dict(zip(list1, list2))) #zip函数作用:将两个对象中对应的元素打包成一个个元组,返回一个对象
#注意,list1元素作为键,list2元素作为值,list1中元素必须为不可变元素
输出结果如下:
{23333: 'hello', 'hello': ',', '[1,2,3]': 'world', 'God ': '!'}
{23333: 'hello', 'hello': ',', '[1,2,3]': 'world', 'God ': '!'}
列表转化为集合
#列表转化为集合
list2 = ["hello",",","world","!"]
print(set(list2)) #可以去重
输出结果如下:
{'!', 'hello', 'world', ','}
元组
元组转化为列表
#元组转化为列表
tuple1 = (23333,"hello",[1,2,3],"God ")
print(list(tuple1))
输出结果如下:
[23333, 'hello', [1, 2, 3], 'God ']
其余转化略,元组和列表可以无条件相互转化,所以,如果想要将元组转化为其他数据类型,只需将元组转化为列表,然后从列表转化为其他数据类型即可,同理,其他数据类型转化为元组,要先转化为列表,再从列表转化为元组,以下均略。当然探讨元组直接和其他数据类型相互转化也可以,不过那纯粹是增加记忆负担。
字符串
字符串转化为列表
#字符串转化为列表
str1 = "123456"
str2 = "1,2,3,4,5,6"
str3 = "1 2 3 4 5 6"
str4 = "[1,2,3,4,5,6]"
#情况一
print(list(str1)) #直接转化,转化字符串中每一个字符为单独一个元素
print(list(str2)) #直接转化,转化字符串中每一个字符为单独一个元素
print(list(str3)) #直接转化,转化字符串中每一个字符为单独一个元素
print()
#情况二
#.split()方法作用:以 str 为分隔符切片 string
print(str2.split()) #直接将整个字符串作为列表中的一个元素
print(str2.split(",")) #将逗号作为分隔符,转化除逗号之外的每一个字符为单独一个元素
print(str3.split(" ")) #将空格作为分隔符,转化除空格之外的每一个字符为单独一个元素
print()
#情况三
print(eval(str4)) #将字符串视为语句,简单地说直接把首尾的引号去掉,就得到了列表
输出结果如下:
['1', '2', '3', '4', '5', '6']
['1', ',', '2', ',', '3', ',', '4', ',', '5', ',', '6']
['1', ' ', '2', ' ', '3', ' ', '4', ' ', '5', ' ', '6']
['1,2,3,4,5,6']
['1', '2', '3', '4', '5', '6']
['1', '2', '3', '4', '5', '6']
[1, 2, 3, 4, 5, 6]
字符串转化为字典
#字符串转化为字典
str5 = "{'red':1,'blue':2,'green':3}"
print(eval(str5)) #将字符串视为语句,简单地说直接把首尾的引号去掉,就得到了字典
输出结果如下:
{'red': 1, 'blue': 2, 'green': 3}
字符串转化为集合
#字符串转化为集合
str1 = "123456"
str6 = "{1,2,3,4,5,6}"
#情况一
print(set(str1))
#情况二
print(eval(str6)) #将字符串视为语句,简单地说直接把首尾的引号去掉,就得到了集合
输出结果如下:
{'4', '5', '2', '6', '1', '3'}
{1, 2, 3, 4, 5, 6}
字典
字典转化为列表
#字典转化为列表
dict1 = {'red':1,'blue':2,'green':3};
print(list(dict1.values())) #值转化为列表
print(list(dict1.keys())) #键转化为列表
print(list(dict1.items())) #键值组合转化为列表
print()
print(list(dict1)) #默认将键转化为列表
输出结果如下:
[1, 2, 3]
['red', 'blue', 'green']
[('red', 1), ('blue', 2), ('green', 3)]
['red', 'blue', 'green']
字典转化为字符串
#字典转化为字符串
dict1 = {'red':1,'blue':2,'green':3};
print(str(dict1)) #将dict1直接转化为字符串,简单地说直接在字典的首尾加上引号
输出结果如下:
{'red': 1, 'blue': 2, 'green': 3}
字典转化为集合
#字典转化为集合
dict1 = {'red':1,'blue':2,'green':3};
print(set(dict1.values())) #值转化为集合
print(set(dict1.keys())) #键转化为集合
print(set(dict1.items())) #键值组合转化为集合
print()
print(set(dict1)) #默认将键转化为集合
输出结果如下:
{1, 2, 3}
{'green', 'blue', 'red'}
{('green', 3), ('blue', 2), ('red', 1)}
{'green', 'blue', 'red'}
集合
集合转化为列表
#集合转化为列表
str1 = "123456"
set1 = set(str1)
print(list(set1))
输出结果如下:
['5', '2', '1', '6', '4', '3']
集合转化为字符串
#集合转化为字符串
str1 = "123456"
set1 = set(str1)
print(str(set1)) #将set1直接转化为字符串,简单地说直接在集合的首尾加上引号
输出结果如下:
{'5', '2', '1', '6', '4', '3'}
集合转化为字典略,将集合转化为列表,再参考从列表转化为字典的方法即可。
结束语
通过对一系列转化的分析,我们可以得出以下简明的结论:
1、列表是一系列转化的核心,适应情况最多,对数据的处理最有效,所以重点识记列表到其他数据结构的转化以及其他数据结构到列表的转化,就能处理所有的情况。
2、最低要求掌握split(),zip(),set(),dict(),list(),tuple(),str(),eval()等函数
string.join(),dict.values(),dict.keys,dict.items()等方法的使用,那么转化就不成问题了。
3、就算忘记了转化的方法,我们也可以重新创建一个数据结构,把数据重新输入一遍,也不是无失为好办法。
上一篇: C# 解决datatable想删除不想要的多行方法
下一篇: git删除不想要的记录