Python连载(0011): 十分钟理解元组
文章目录
- 1. 什么是元组?
- 2. 元组的常用操作
- 2.1 索引和切片
- 2.2 遍历元组
- 2.3 获取元组中元素个数len()
- 2.4 元素查询:in,index(), count()
- 2.5 运算符:+ 和 *
- 2.6 元素最大值和最小值:max, min
- 3. 元组的不可变特性
起这么个标题只是为了吸引你进来看看,能不能十分钟介绍清楚元组,老王也没把握...
1. 什么是元组?
元组与列表非常类似,最大的一点区别就是元组是不可修改的,所以你可以叫它只读列表(关于只读特性,后面会详细讲)。
元组的定义与列表类似,只不过列表用中括号[]
,而元组用小括号()
。
# 创建包含多个元素的元组
first_tuple = ("元素1", "元素2", "元素3")# 创建空元组
empty_tuple = ()# 创建只包含一个元素的元组
second_tuple = ("元素1",)
当创建只包含一个元素的元组时,在元素后面一定要跟一个逗号,如果你写成second_tuple = ("元素1")
,**那么Python不会认为这是在定义元组,而是会把他当成一个加了小括号的字符串。**这种情况下,Python就会理所当然的想:你以为加个小括号我就不认识你了,你还是个普通字符串。
2. 元组的常用操作
2.1 索引和切片
元组和列表一样,支持索引和切片。例如:
tup1 = ("张三", "李四", "王五", "赵六")print(tup1[1]) # 输出元组第2个元素
print(tup1[-1]) # 输出元组最后1个元素
print(tup1[1:]) # 输出元组第2个元素,以及后面的所有元素
2.2 遍历元组
tup1 = ("张三", "李四", "王五", "赵六")# 遍历输出元组中的所有元素
for name in tup1:print(name)
2.3 获取元组中元素个数len()
tup = ("张三", "李四", "王五", "赵六")
print(len(tup))
2.4 元素查询:in,index(), count()
in
: 判断某元素是否在元祖中
tup = ("张三", "李四", "王五", "赵六")# 判断某元素是否在元祖中
if "张三" in tup:print("张三在元组中。")
else:print("张三不在元组中。")
index()
: 获取某个元素的索引
tup = ("张三", "李四", "王五", "赵六")# 获取某个元素的索引
print(tup.index("李四"))
注意:和列表一样,元组的index()
也是从左侧开始查,然后返回查到的第一个符合条件的元素的索引。
count()
: 统计某个元素在元祖中出现的次数
tup = ("张三", "李四", "王五", "赵六", "李四")# 统计某个元素在元祖中出现的次数
print(tup.count("李四"))
2.5 运算符:+ 和 *
加号
+
元组虽然不能改变元素的值,但是可以用加号
+
将多个元组组合起来。
tup1 = (1, 2, 3)
tup2 = (4, 5, 6)tup3 = tup1 + tup2
print(tup3)
- 乘号
*
乘号*
可以使某个元祖复制多次,例如:
tup1 = (1, 2, 3)
tup2 = tup1 * 4
print(tup2)
2.6 元素最大值和最小值:max, min
tup = (2, 5, 7, 2, 4, 1)
print(max(tup)) # 输出最大的元素值
print(min(tup)) # 输出最小的元素值
3. 元组的不可变特性
元组的不可变特性是指不可以改变元素的值。例如:
tup = (1, 2, 3, 4)# 如果尝试将第一个元素的值该位100,则会出错
tup[0] = 100
但有人可能举下面的例子:
tup = (1, 2, 3, 4)
print(tup)
tup = (100, 2, 3, 4)
print(tup)
这么做看起来确实是改变了第一个元素的值,但实际上,其实它是重新创建了一个元组(100, 2, 3, 4)
,然后绑定到了tup
上。
然后,还有人可能会拿出下面这段代码:
tup = (1, 2, [3, 4, 5], 4)
print(tup)tup[2][2] = 100
print(tup)
诶,这不是元素的值被改变了吗?元组不是不能改变元素的值吗?
其实,元组元素的值并没有发生改变。在上面的例子中,元组的第一个元素值是1
,第二个元素值是2
,但是第三个元素是列表,所以Python将列表在内存中的地址作为第三个元素的值;第四个元素是4
。
从元组的角度来讲,执行tup[2][2]=100
时,元组第三个元组的值并没有改变,还是指向原来那个列表,只不过列表所在的内存中的值发生了改变。
举例来说,tup
就向4个紧挨着放的小盒子,第一个盒子里放了个苹果,第二个盒子里放了桃,第三个盒子里放了个杯子(杯子里放了三个球),第四个盒子里放了个西瓜。我们执行tup[2][2]=100
指令时,其实相当于把杯子里的一个球拿出来换掉了,但是第三个盒子里放的杯子没变。
Python连载(0011): 十分钟理解元组相关推荐
- java弱引用怎么手动释放,十分钟理解Java中的弱引用,十分钟java引用
十分钟理解Java中的弱引用,十分钟java引用 本篇文章尝试从What.Why.How这三个角度来探索Java中的弱引用,帮助大家理解Java中弱引用的定义.基本使用场景和使用方法.由于个人水平有限 ...
- python连载第十五篇~史上最全列表知识源码+答案
#2017-12-19 19:34:41 December Tuesday the 51 week, the 353 day #python连载第十五篇~list列表#列表定义,访问,索引,操作,切片 ...
- 十分钟理解Transformer
本文转载于知乎文章:十分钟理解Transformer Transformer是一个利用注意力机制来提高模型训练速度的模型.关于注意力机制可以参看这篇文章,trasnformer可以说是完全基于自注意力 ...
- 这是我见过最好的Python教程:十分钟带你认识Python
这篇文章主要介绍了简洁的十分钟Python入门教程,Python语言本身的简洁也使得网络上各种Python快门入门教程有着很高的人气,本文是国内此类其中的一篇,需要的朋友可以参考下 [简介] Pyth ...
- 十分钟理解线性代数的本质_数学对于编程来说到底有多重要?来看看编程大佬眼里的线性代数!...
本文提出了一种观点:从应用的角度,我们可以把线性代数视为一门特定领域的程序语言.我们一起来看看!文章有点偏理论讨论,可能比较枯燥,对于一名程序员,你如果看下去,你将会有不一样的收获! 线性代数是什么? ...
- Python + wordcloud + jieba 十分钟学会生成中文词云
前述 本文需要的两个Python类库 jieba:中文分词分词工具 wordcloud:Python下的词云生成工具 写作本篇文章用时一个小时半,阅读需要十分钟,读完该文章后你将学会如何将任意中文文本 ...
- Python + wordcloud + jieba 十分钟学会用任意中文文本生成词云
前述 本文需要的两个Python类库 jieba:中文分词分词工具 wordcloud:Python下的词云生成工具 写作本篇文章用时一个小时半,阅读需要十分钟,读完该文章后你将学会如何将任意中文 ...
- python数据分析建模-十分钟搞懂“Python数据分析”
原标题:十分钟搞懂"Python数据分析" 引言:本文重点是用十分钟的时间帮读者建立Python数据分析的逻辑框架.其次,讲解"如何通过Python 函数或代码和统计学知 ...
- python 股票_十分钟学会用Python交易股票
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本文通过讲述 [单股票均线策略] 在 Ricequant 量化平台的实现,熟悉平台并快速入门.创建自己的量化策略代码 .难易度:入门级.从一下几点说起: ...
- python 炒股_十分钟学会用Python交易股票
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本文通过讲述 [单股票均线策略] 在 Ricequant 量化平台的实现,熟悉平台并快速入门.创建自己的量化策略代码 .难易度:入门级.从一下几点说起: ...
最新文章
- 3D CNN框架结构各层计算
- JAVA将 带有空格或特殊字符的字符串转换成int数组的方法
- 阿里云视图计算,边缘计算的主“战”场
- 线程池源码分析-FutureTask
- php游客随机代码,php生成随机码的一段代码
- 几百万的数据查找重复值_如何快速查找出Excel中的重复数据,多角度分析
- MTK eCos系统的有线驱动收包流程
- 栈和递归---手动实现一个栈和蒜头君吃桃
- python打包成exe文件
- 使用Java调用默认浏览器打开指定网址
- 电视盒子刷鸿蒙系统,家里的智能电视能装鸿蒙系统吗?鸿蒙系统有哪些优势?...
- linux的打包压缩文件,linux打包文件,压缩文件
- 中国经济社会大数据研究平台——国内统计数据
- 对搜索引擎市场份额调查数据差异之补充
- 新手建站之【域名解析】⑦
- IV与PSI的理解--深入浅出
- Vue创建项目的步骤
- MySQL查询年龄最大学生信息_查询xsda表中年龄最大的学生的出生日期
- 秩和比RSR法算法C语言,一文掌握秩和比综合评价法
- frp内网穿透服务使用
热门文章
- echarts关系图vue完整代码
- 微信公众号订阅号与微信服务号有什么不同
- 【《编码(Coding)》读后感】隐匿在计算机软硬件背后的语言
- 数字后端设计中的时钟
- f检验matlab计算,方差分析F检验的步骤和判定
- Failed to lookup view “error“ in views directory 解决方案
- delphi10.2 将网页页面带格式复制到word中。
- 中国拖车洒水器市场趋势报告、技术动态创新及市场预测
- 掘地求生是什么游戏 把主播都逼疯的玩个锤子是什么游戏-李廷学
- 实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)