文章目录

  • 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): 十分钟理解元组相关推荐

  1. java弱引用怎么手动释放,十分钟理解Java中的弱引用,十分钟java引用

    十分钟理解Java中的弱引用,十分钟java引用 本篇文章尝试从What.Why.How这三个角度来探索Java中的弱引用,帮助大家理解Java中弱引用的定义.基本使用场景和使用方法.由于个人水平有限 ...

  2. python连载第十五篇~史上最全列表知识源码+答案

    #2017-12-19 19:34:41 December Tuesday the 51 week, the 353 day #python连载第十五篇~list列表#列表定义,访问,索引,操作,切片 ...

  3. 十分钟理解Transformer

    本文转载于知乎文章:十分钟理解Transformer Transformer是一个利用注意力机制来提高模型训练速度的模型.关于注意力机制可以参看这篇文章,trasnformer可以说是完全基于自注意力 ...

  4. 这是我见过最好的Python教程:十分钟带你认识Python

    这篇文章主要介绍了简洁的十分钟Python入门教程,Python语言本身的简洁也使得网络上各种Python快门入门教程有着很高的人气,本文是国内此类其中的一篇,需要的朋友可以参考下 [简介] Pyth ...

  5. 十分钟理解线性代数的本质_数学对于编程来说到底有多重要?来看看编程大佬眼里的线性代数!...

    本文提出了一种观点:从应用的角度,我们可以把线性代数视为一门特定领域的程序语言.我们一起来看看!文章有点偏理论讨论,可能比较枯燥,对于一名程序员,你如果看下去,你将会有不一样的收获! 线性代数是什么? ...

  6. Python + wordcloud + jieba 十分钟学会生成中文词云

    前述 本文需要的两个Python类库 jieba:中文分词分词工具 wordcloud:Python下的词云生成工具 写作本篇文章用时一个小时半,阅读需要十分钟,读完该文章后你将学会如何将任意中文文本 ...

  7. Python + wordcloud + jieba 十分钟学会用任意中文文本生成词云

    前述 本文需要的两个Python类库  jieba:中文分词分词工具  wordcloud:Python下的词云生成工具 写作本篇文章用时一个小时半,阅读需要十分钟,读完该文章后你将学会如何将任意中文 ...

  8. python数据分析建模-十分钟搞懂“Python数据分析”

    原标题:十分钟搞懂"Python数据分析" 引言:本文重点是用十分钟的时间帮读者建立Python数据分析的逻辑框架.其次,讲解"如何通过Python 函数或代码和统计学知 ...

  9. python 股票_十分钟学会用Python交易股票

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本文通过讲述 [单股票均线策略] 在 Ricequant 量化平台的实现,熟悉平台并快速入门.创建自己的量化策略代码 .难易度:入门级.从一下几点说起: ...

  10. python 炒股_十分钟学会用Python交易股票

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本文通过讲述 [单股票均线策略] 在 Ricequant 量化平台的实现,熟悉平台并快速入门.创建自己的量化策略代码 .难易度:入门级.从一下几点说起: ...

最新文章

  1. 3D CNN框架结构各层计算
  2. JAVA将 带有空格或特殊字符的字符串转换成int数组的方法
  3. 阿里云视图计算,边缘计算的主“战”场
  4. 线程池源码分析-FutureTask
  5. php游客随机代码,php生成随机码的一段代码
  6. 几百万的数据查找重复值_如何快速查找出Excel中的重复数据,多角度分析
  7. MTK eCos系统的有线驱动收包流程
  8. 栈和递归---手动实现一个栈和蒜头君吃桃
  9. python打包成exe文件
  10. 使用Java调用默认浏览器打开指定网址
  11. 电视盒子刷鸿蒙系统,家里的智能电视能装鸿蒙系统吗?鸿蒙系统有哪些优势?...
  12. linux的打包压缩文件,linux打包文件,压缩文件
  13. 中国经济社会大数据研究平台——国内统计数据
  14. 对搜索引擎市场份额调查数据差异之补充
  15. 新手建站之【域名解析】⑦
  16. IV与PSI的理解--深入浅出
  17. Vue创建项目的步骤
  18. MySQL查询年龄最大学生信息_查询xsda表中年龄最大的学生的出生日期
  19. 秩和比RSR法算法C语言,一文掌握秩和比综合评价法
  20. frp内网穿透服务使用

热门文章

  1. echarts关系图vue完整代码
  2. 微信公众号订阅号与微信服务号有什么不同
  3. 【《编码(Coding)》读后感】隐匿在计算机软硬件背后的语言
  4. 数字后端设计中的时钟
  5. f检验matlab计算,方差分析F检验的步骤和判定
  6. Failed to lookup view “error“ in views directory 解决方案
  7. delphi10.2 将网页页面带格式复制到word中。
  8. 中国拖车洒水器市场趋势报告、技术动态创新及市场预测
  9. 掘地求生是什么游戏 把主播都逼疯的玩个锤子是什么游戏-李廷学
  10. 实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)