Python中有一个基础的数据结构,叫做元组(tuple),但是一般挺少有人会到到它的,因为基本上在开发过程中,列表(list)已经能够满足我们的基本需求了。

即使是这样,你也千万不要就此认为元组是多余的。不然在面试被人问,元组和列表有啥区别?为什么需要元组?你就懵了。

在这里,小明总结了以下两点,第一点是大家所熟知的,而第二点可能只有老司机才会知道,而只有学习了第二点,才算真正理解了元组存在的价值和意义。

01不可变列表

这是元组区别于列表最显著的特征。

list:可变的序列

tuple:不可变的序列

那什么是不可变的序列呢?

那就是在元组对象生成后,诸如列表的插入元素、删除元素、添加元素、清空元素、修改元素等方法,在元组中通通没有,你无法对其进行修改、删除,你只能获取。

由于元组是不可变的,所以其方法也是很有限的。这里罗列一下。

# s1和s2都是元组
s1=(1,2,3)
s2=(4,5,6)# 拼接生成新元组
s1+s2
s1.__add__(s2)# 是否包含
2 in s1
s1.__contains__(2)# 统计元素包含的次数
s1.count(2)# 获取元素
s1[0]
s1.__getitem__(0)# 找到2第一次出现的索引
s1.index(2)# 获取长度
len(s1)# 重复拼接
s1*n

02具名元组

这个特性,我个人认为,才是元组存在的意义所在。

只讲 具名元组,可能不太好理解。如果称之为 带字段名的记录,你可能就清楚了。

这里举个例子,但是实现带字段名,需要一个库(collections)的支持,你需要导入它。namedtuple是一个工厂函数。

from collections import namedtuple
# 生成一个City类
City = namedtuple("City", "name country polulation coordinates")
# 实例化
tokyo = City("Tokyo", 'JP', '36.93', ('35.68','139,69'))print(tokyo)
# City(name='Tokyo', country='JP', polulation='36.93', coordinates=('35.68', '139,69'))print(tokyo.name)
# Tokyo

看着有点像字典,是不是,可惜他不是字典(获取数值的方法也与字典不同),字典是可变。元组在创建后,就无法再对其进行修改。这在也说明元组适合存放那些无需修改的数据。比如上面的,地名,国家,经纬度。

除了上面的用法之处,这里还要介绍一些元组自己专有的属性。

# 打印字段名
print(City._fields)
('name', 'country', 'polulation', 'coordinates')# 生成新实例
LatLong = namedtuple('LatLong', 'lat long')
Xiamen_tuple = ('Xiemen', 'China', '40,54', LatLong(24.26,118.03))
Xiamen = City._make(Xiamen_tuple)print(Xiamen)
# City(name='Xiemen', country='China', polulation='40,54', coordinates=(24.26, 118.03))# 将具名元组转为OrderDict
Xiamen_dict = Xiamen._asdict()
print(Xiamen_dict)
# OrderedDict([('name', 'Xiemen'), ('country', 'China'), ('polulation', '40,54'), ('coordinates', LatLong(lat=24.26, long=118.03))])

总结一下,元组是一种很强大的可以当作记录来用的数据类型,这才是他存在的价值和意义所在。而为人所熟知的,它的第二个角色才是充当一个不可变的列表。

如果你想学习自动化测试、性能测试、测试开发,但是自己又非常的迷茫,没有思路又怕耽误时间,那么你可以找我。我非常愿意将自己从业10年的经验传授给你,也愿意将自己独家的核心教程免费赠送。

公众号【程序员阿沐】找到我!我一直在等着你!

Python基础|理解元组存在的意义相关推荐

  1. Python基础——数据类型—元组

    Python基础--数据类型-元组 Python基础--数据类型-元组 元组的创建 访问元组 元组的拼接 元组中的元素是不允许进行修改和删除的,但是可以删除整个元组 元组的运算符 打印元组元素 元组的 ...

  2. Python基础(3)——元组(tuple)的定义与基本操作

    一.元组的定义 元组名 = ( 元素1 , 元素2 , ... ... ) #当定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来 >>> tup1 = ('Goo ...

  3. Python深入理解元组与列表的使用和区别

    元组是 Python 对象的集合,跟列表十分相似.下面进行简单的对比. 列表与元组 1.python中的列表list是变量,而元组tuple是常量. 列表:是使用方括号[],元组:则是使用圆括号() ...

  4. python基础之元组,列表

    >>> menber=["小甲鱼","不定","怡欣","mt"]>>> for e ...

  5. python基础之元组定义进阶操作、字典定义进阶操作

    元组 创建元组 把所有的元素放到括号里,就是元组 创建空元组 如果定义只有一个元素的元组,那么这个元素后面要加一个逗号,告诉它我要定义的是元组 创建复杂的元组,括号内可以随便嵌套. 当然,如果嵌套的层 ...

  6. python基础day6元组与字典集合操作

    目录 1.元组 介绍元组 定义元组 元组的操作 2.字典 创造字典 字典的操作 3.get(),keys()和values(),items() 4.集合 集合的介绍 创建集合 集合的常见操作 5.公共 ...

  7. python基础—列表元组作业题

    列表和元组作业题 1.两数之和 """ 给定一个数组 nums 和一个目标值 target ,在数组中找出和为目标值的那两个整数,并返回他们的下标 可以假设每种输入只对应 ...

  8. 【python基础】——数据类型(列表、字典、集合)

    骏马金龙--python语法基础 python基础 变量与运算 符号 // % ** 意义 整除 整除取余 幂次方 数据种类 #mermaid-svg-7nSRRijcYFCYwTDr .label{ ...

  9. 【Python基础】Python的元组,没想象的那么简单

    Python的元组与列表类似,元组一旦创建,元组中的数据一旦确立就不能改变,不能对元组中中的元素进行增删改操作,因此元组没有增加元素append.更新元素update.弹出元素pop等相关方法,只有简 ...

最新文章

  1. c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现
  2. vivo Y93s的USB调试模式在哪里,打开vivo Y93sUSB调试模式的步骤
  3. 【数据结构和算法16】堆排序
  4. rbpf粒子滤波slam matlab程序_学习笔记(优达学城)- 车辆定位之粒子滤波器(整合版)...
  5. JVM内存模型与垃圾回收GC
  6. redistemplate使用_spring-boot-starter-data-redis源码解析与使用实战
  7. 帕特·基辛格被任命为英特尔CEO已有一年
  8. HTML的a标签href设为零操作的原因和方式
  9. 以中划线开头正则表达式_正则表达式 汉字、数字、字母、横杠
  10. 计算机应用软件专家证,计算机应用软件项目验收报告专家
  11. android recyclerview 滚动监听,Android RecyclerView(九)滑动监听综述
  12. FreeBSD下使用Blogbio写cnblogs博客
  13. 台式计算机时间不能同步,电脑时间同步不了怎么办
  14. windows提升效率神器
  15. react+mobx+jquery构建大型工具项目经验总结
  16. 傲梅轻松备份linux,傲梅轻松备份官方下载_傲梅轻松备份最新版_傲梅轻松备份5.7免费版-华军软件园...
  17. Winrar制作自解压安装程序
  18. 学校初一模拟赛(2019.4.7)
  19. 华为鸿蒙麒麟玉兔_华为!《鸿蒙出世:中国神兽图鉴》
  20. HDU 4685. Prince and Princess

热门文章

  1. 005_解密饿了么大前端团队
  2. Linux负载均衡脚本,linux负载均衡软件设置(一)
  3. ORACLE 各类博客
  4. 【Python】Python 可变对象和不可变对象
  5. web项目开发一般流程
  6. 先调用finish() 然后startActivity有什么区别?
  7. 知乎关注度人数最多的问题排行榜 TOP10
  8. 虚拟服务器端口211,双路由器要这样映射-路由器设置端口映射
  9. SQL Server研习录(08)——LEFT()函数
  10. 如何将多个doc文档合并在一起