Python3的元组,字典,列表,集合有什么联系和区别?

Python014

Python3的元组,字典,列表,集合有什么联系和区别?,第1张

4个都是python的数据结构。

元组和列表的底层实现是一样的,本质都是把一堆东西放在一排,区别在于元祖放完后就不能改了。

你把字典理解成我们普通用的字典就可以了,而集合就是把字典的所有value都设置成None。字典和集合的底层实现原理是一样的,但初学者不必关注这个原理。集合与数学中的集合有相同性质,比如唯一性,对比字典中key的唯一性来理解一下。

比方:你遇到一个没见过的字,查查看是不是标准的汉字,这就是集合的作用,集合只关注有没有的问题;如果是标准汉字,你要看看这个字的意思,这就是字典的作用;你现在找来一个汉字,打算组成成语,然后再找几个字,向第一个汉字左右放,就是列表的作用;一旦发现一个成语,就固定不变了,字和字的排列都不能改,这就是元祖。

所以这篇文章,我们先来回顾和总结Python数据结构里常用操作。Python中常见的数据结构可以统称为容器(container)。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。而扁平序列如str、bytes、bytearray、memoryview 和 array.array等不在这篇文章的讨论范围内。

在此,我们先从元组开始说起。

元组区别于列表的显著特征之一就是它不能被修改,但其另外一个作用就是 用于没有字段名的记录 [1] 。因为后者经常被忽略,我们先来看看元组作为记录的作用。

使用括号就可以定义一个元组。元组中的每个元素都存放了记录中一个字段的数据,外加这个字段的位置。正是这个位置信息给数据赋予了意义。下面的例子中,元组就被当作记录加以利用:

输出为:

上述for循环中的操作提取了元组中的元素,也叫作拆包(unpacking)。平行赋值是对元组拆包很好的应用,示例如下:

还有一个经典而优雅的应用是交换变量的值:

用 * 运算符把一个可迭代对象拆开作为函数的参数,例如Python的内置函数pmod接收两个数字类型的参数,返回商和余数。以下范例将使用 * 将元组传入函数。

输出为:

有些函数有多个返回值,将其赋给一个变量时,变量类型即是元组:

输出为:

zip是Python的内置函数,能够接收两个或多个序列,并组成一个元组列表,在Python3中会返回一个迭代器,如下所示:

输出为:

元组当然也支持一些常规操作,如对于元组 a = (1, 'y', 5, 5, 'x') :

上述内容不仅涵盖了元组的基本操作,同时也结合了实际工作中常搭配使用的其他函数、运算符等。在回顾这些知识时主要参考了两本经典的Python编程书籍:《流畅的Python》和《像计算机科学家一样思考Python》,有兴趣的朋友可以深入阅读!

希望这篇文章对你有帮助,下回将总结Python列表的使用技巧。

[1]《流畅的Python》:https://book.douban.com/subject/27028517/