当前位置: 首页 > 后端技术 > Python

Python中的元组有什么用?

时间:2023-03-26 00:44:25 Python

Python有一个基本的数据结构叫元组,但是一般很少有人会用到,因为在开发过程中,列表(list)基本可以满足我们的需求。即便如此,你也不能认为元组是多余的。不然面试的时候也不会经常有人问,元组和列表有什么区别?为什么需要元组?下面两点,第一点是众所周知的,第二点可能只有有经验的司机才知道。只有学习了第二点,才能真正理解元组存在的价值和意义。1.不可变列表这是区分元组和列表的最显着特征。列表:可变序列元组:不可变序列那么什么是不可变序列?即生成元组对象后,元组中的插入元素、删除元素、添加元素、清空元素、修改列表元素等功能在元组中不可用,无法修改。由于元组是不可变的,因此它们的方法是有限的。在这里列出它们。#s1和s2都是元组s1=(1,2,3)s2=(4,5,6)#拼接生成新的元组s1+s2s1.__add__(s2)#s1中是否包含2s1.__contains__(2)#统计元素包含的次数s1.count(2)#得到元素s1[0]s1.__getitem__(0)#找到2第一次出现的索引s1.index(2)#得到长度len(s1)#重复拼接s1*n2。命名元组的特点,我个人认为,就是元组存在的意义。单说命名元组可能不太好理解。如果它被称为带有字段名称的记录,您可能会清楚。这里有一个例子,但是要实现字段名,需要库(集合)的支持,需要导入。fromcollectionsimportnamedtuple#生成一个城市类City=namedtuple("City","namecountrypollutioncoordinates")#Instantiatetokyo=City("Tokyo",'JP','36.93',('35.68','139,69'))print(tokyo)#City(name='Tokyo',country='JP',pollution='36.93',coordinates=('35.68','139,69'))print(tokyo.name)#Tokyo有点像字典对不对,但它又不是字典(取值的方式也和字典不一样),字典是可变的。元组一旦创建,就无法修改。这在一定程度上说明元组适合存储不需要修改的数据。比如上面,地名,国家,经纬度。除了上面的用法,这里还有一些元组特有的属性。#打印字段名print(City._fields)('name','country','polulation','coordinates')#生成一个新实例LatLong=namedtuple('LatLong','latlong')Xiamen_tuple=('Xiemen','China','40,54',LatLong(24.26,118.03))Xiamen=City._make(Xiamen_tuple)print(Xiamen)#City(name='西门',country='中国',pollution='40,54',coordinates=(24.26,118.03))#将命名元组转换为OrderDictXiamen_dict=Xiamen._asdict()print(Xiamen_dict)#OrderedDict([('name','Xiemen'),('country','China'),('polulation','40,54'),('coordinates',LatLong(lat=24.26,long=118.03))])总而言之,元组是一种将它们用作记录的非常强大的方式这是他存在的价值和意义。众所周知,它的第二个作用是充当不可变列表。