在python中,我们经常使用列表、字典等数据类型来存储数据或者重构一个序列,它们之间也存在一些关联。接下来,我们将对python中常用的几种数据类型进行全面的回顾。同样的区别相当于一个容器,如果有存储数据的功能,可以用for...in来循环。不同的是序列存储的是不同类型的数据,而迭代器存储的是算法。sequence是预先存储数据,在获取数据的时候通过循环或者索引来检索数据;而迭代器不需要存储数据,获取数据时通过算法获取下一条数据。序列中的每个数据都需要开辟内存空间;而迭代器则不需要,每次只需要通过算法计算出下一个值即可。从这个角度来看,处理大量数据使用迭代器更合适。序列可以通过索引或键名获取值,而迭代器只能使用next()获取下一个值。变化趋势是从左到右,你可以试着找出一些规律。从数据的排序来看,从左到右可以看出是无序、有序、规则(也可以定义为有序)。从数据操作的灵活性来看,左边的操作性更灵活,可以增删改查;右边比较简单,只能查询(注:定义的字符串只能查询,是方法生成的字符串,不是原始字符串)。从定义数据类型的符号来看,也是按照汉字的大小引号来实现的,比如字典|集合是大括号,列表是括号,元组是圆括号,字符串是双引号或单引号。数据类型之间的相互转换以上不同的数据类型也可以实现两者之间的相互转换。转换时只需要调用相应的函数即可,如下图所示。下图给出了各个数据类型之间的相互转换和具体例子。从上表可以看出,数据类型是可以相互转换的。总结有以下几点:无论转换什么数据类型,具体的数据类型都是用关键字括起来的,比如把元组转换成列表:list(tuple)转换成字典,需要注意的是每两个数据必须分组并括在括号中,这样才能正确生成字典的键值对,转换元素时会报错。在转为字符串时需要注意的是,虽然str(data)可以转为字符串,但很多情况并不是我们想要的。我们更想要的是将序列中的元素组合成一个字符串,如果要实现这样的需求,可以使用join()方法来实现。转换为字典时,必须将两个元素组合成一个元组进行转换。为了简单起见,我们可以更方便地使用zip()来形成两个序列的新字典。#通过zip把两个list合并成一个sequence,然后再转成一个dictionary。lst1=['x','y','z']#可以是列表、元组、集合lst2=[123,234,345]print(dict(zip(lst1,lst2)))#output:{'x':345,'y':234,'z':123}虽然str()转换后的数据变成了字符串,但是我们更希望的是将序列中的元素组合成一个字符串。然后你可以使用join()方法将其中的元素更改为所需的字符串。#Syntax:"sep".join(seq)#Example:x="".join({'a':123,'b':345})print("x:",x)y=",".join(['java','python','c++'])print("y:",y)z="_".join(("tuple","demo","01"))#输出:x:aby:java,python,c++z:tuple_demo_01#说明:sep是分隔符,seq序列写起来方便——推导在上面的数据结构中,有些数据类型也支持推导,推导可以是一个Iterables内置到表达式中新迭代的结构。通过推导可以快速实现一个新的序列或生成器,代码也可以更优雅、更快速。为了更加直观,我们可以将不同数据类型所支持的推理总结成一张图。我们只需要记住理解433。字典推导#Syntax:{forkey,valueindictcondition}#Example:d={'chinese':88,'math':92,'english':93,'history':84}print("90分以上的科目:",{k:'excellent'fork,vind.items()ifv>=90})#输出90分以上的科目:{'math':'excellent','english':'excellent'}#说明:for循环后面的表达式可以是条件表达式也可以是循环表达式,主要用于过滤或者嵌套循环。新词典。集合推导:#Syntax:{forxinsetcondition}#Examples={x**2forxin[1,2,3]}print("sets:",s)#Output:Collections:{1,4,9}listcomprehension#Syntax:[operation(x)forxinlistcondition]#Exampleprint([random.randint(1,10)+xforxinrange(0,10)ifx%2==0])#Result:[3,3,14,15,12]#说明:#常用于列表推导的几种用法用法一:[xforxiniterable]#直接打印循环后用法二:[xforxiniterableifcondition(x)]#x的条件判断用法三:[operation(x)forxiterableifcondition(x)]#判断x的条件后,再进行操作onx用法4:[operation(x,y)forxiniterableforyiniterable1]#嵌套循环,对x,y生成器推导#Syntax:(operation(x)forxiniterablecondition)#Exampleprint((random.randint(1,10)+xforxinrange(0,10)ifx%2==0))#Result:at0x02FDC420>#Description:新生成的生成器可以使用一个为罗op或next()来获取它的下一个值。组合使用以上数据结构不仅可以作为容器使用,还可以组合起来做其他用途。例如,它可以用作条件语句。为了直观起见,我们先写一个简单的if语句。score=92ifscore>=90:print('Excellent')else:print('Good')#Output:Excellent接下来,我们通过以下三种方式重新定义条件语句。第一种,用()+[]实现条件判断#语法:(,)[condition_expression]#例子:score=92print(('good','excellent')[score>=90])#结果:优秀#解释:在[]中写条件语句,在()中写返回true和返回false的值。一定要注意顺序,()在前面,[]在后面,用{}+[]实现条件判断#语法:{True:,False:}[]#例子:score=92print({True:'Excellent',False:'Good'}[score>=90])#Result:Excellent#Description:在[]中写条件语句,在()中写要返回true和返回为false的值,一定要注意顺序的第三个顺序,判断字符串的条件,需要用到eval方法。#语法:eval("字符串判断语句")#示例print('Excellent'ifeval("score>=90")else'good')#结果为excellent本文仅供学习,版权归属给原作者。如有侵权,请联系删除。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,800+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕你学不会!https://shimo.im/docs/JWCghr8...《Python学习资料》关注公众号【蟒圈】,每日优质文章推送。