码出个世界

导航

元组与列表区别和联系

区别概括:
list 是可变的对象;元组 tuple 是不可变的对象。

元组声明和赋值后,不能像列表一样添加、删除和修改元素,也就是说元组在程序运行过程中不能被修改。用于列表的排序、替换、添加等方法也不适用于元组,适用于元组的主要运算有元组的合并、遍历、求元组的最大值和最小值等操作方法。由于 tuple 不可变,所以使用 tuple 可以使代码更安全。

 

在很多比较“资深”的编程语言里开始是没有元组的,比如:Java、C++、C# 等,但是由于元组的灵活和便捷性,最后这些编程语言也都纷纷加上了。并且很多年轻的编程语言 Python、Scala 等,一开始就内置了元组类型。相比之下,列表就差很多了。

之所以元组这么受欢迎,其实最关键的一点是它的语法的灵活和便捷性,提高了编程体验。其中最大的一个特性就是使函数可以返回多个值,这个特性很常用。

1. 函数以元祖类型返回(return)多个值

函数返回多个值?对,你没有听错。函数是可以返回多个值的。如: 

 

非常简单,就是一个返回坐标值(x , y)的函数,我们同时获取了多个值 x 和 y 。

但是这和 tuple元组有什么关系了?

其实这里存在一个假象,Python函数返回的值本质上还是一个单值,看下面代码:

 

从打印结果可以看出,这里返回值就是一个tuple!由于在语法上,返回一个tuple是可以省略括号的,而多个变量可以同时接收一个tuple,按位置赋给对应的值。

所以,Python的函数返回多值时,其实就是返回一个tuple。

2. tuple 不可变的好处

相对于 list 而言,tuple 是不可变的,这使得它可以作为 dict 的 key,或者扔进 set 里,而 list 则不行。

tuple 放弃了对元素的增删(内存结构设计上变的更精简),换取的是性能上的提升:创建 tuple 比 list 要快,存储空间比 list 占用更小。所以就出现了“能用 tuple 的地方就不用 list”的说法。

多线程并发的时候,tuple 是不需要加锁的,不用担心安全问题,编写也简单多了。

 

 

联系概括:

元组与列表相似,也是容器对象,可以存储不同类型的内容。

成员关系操作符 in 和 not in 也可以直接应用在元组上,这跟列表是一样的。当然还有等等等等。

# -*- coding:utf-8 -*-
 
temp = ('龙猫', '泰迪', '小猪佩奇', '叮当猫')
a ="泰迪"
c = ('泰迪', '小猪佩奇')
b = a in temp
d =c in temp
f =c not in temp
print(b)
print(d)
print(f)
"""
True
False
True
Process finished with exit code 0

 

posted on 2021-08-19 22:39  码出个世界  阅读(1566)  评论(0)    收藏  举报