Python 元组

1|0元组

1|1定义

列表 与 元组 都可以用来存储一系列元素

列表可以动态地修改元素以及列表组成,虽然元组也能存储一堆元素,但是不可以动态地修改其元素的值,所以元组适合存储一些在整个程序生命周期中都不会改变的值

与列表不同,元组使用 圆括号() 标识

>>> example = (10, 20) >>> print(example) (10, 20)

若直接输出打印元组,与列表一样,都会 打印元组的内部表示

1|0单元素元组的歧义问题

注意:元组若只包含一个元素,容易产生歧义

为了消除这个歧义,需要在这个元素后面添加逗号以区分

方式:变量 = (元素, )

>>> a = (1) >>> type(a) <class 'int'> >>> a = (1, ) >>> type(a) <class 'tuple'>

若不消除歧义,则可能变量被解释为其他类型

1|0空元组

空元组定义为: 变量 = ()

>>> student = () >>> type(student) <class 'tuple'>

1|0定义元组的其他方式

若定义变量时,直接用逗号隔开,默认为元组

>>> a = 'Hello', 'World', '123' >>> type(a) <class 'tuple'> >>> print(a) ('Hello', 'World', '123')

1|2访问元组的值

访问元组的方式与列表一样,都使用 索引 访问元组的元素

方式:元组名[索引]

>>> example = (10, 20) >>> print(example[0]) 10 >>> print(example[1]) 20

定义声明元组使用的是 圆括号,而定义声明列表使用的是 方括号

但是访问两者各自元素时,都是通过 方括号 来存放 索引,并且在方括号前指名 元组名列表名

>>> cars = ['honda', 'toyota', 'bmw'] >>> print(cars[0]) honda >>> food = ('rice', 'ice cream') >>> print(food[0]) rice

1|3遍历元组

使用 for循环 遍历元组

>>> student = ('David', 'Bob', 'Mary', 'Lisa') >>> for i in student: ... print(i) ... David Bob Mary Lisa

1|4从整体上修改元组

若直接修改元组内元素的值,会被提示 类型错误 TypeError

>>> examples = (10, 20) >>> examples[0] = 15 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment

由于不能以赋值的方式修改元组内单个元素,所以若要修改元组时,需要重新定义整个元组,即 给存储元组的变量赋值,定义一个新元组赋值给存储原元组的变量

>>> print("Original") Original >>> examples = (20, 10) >>> for i in examples: ... print(i) ... 20 10 >>> examples = (30, 10) >>> for i in examples: ... print(i) ... 30 10

关键:给存储元组的变量重新赋值

元组无法动态地 增、删,也不能在使用中对单个元素进行修改,所以只能通过对 存储元组的变量 重新赋值的方式,从整体上来修改元组,因为元组无法像列表一样动态的改变

1|5元组复制

可以使用 星号(*) 实现复制

>>> a = ('Hello', 'World', '123') >>> b = a * 2 >>> print(b) ('Hello', 'World', '123', 'Hello', 'World', '123')

若直接将元组变量赋值给另外一个元组变量,与列表不同,这里的复制是真的复制了一个新的元组

>>> a = (1, 2, 3) >>> b = a >>> print(a) (1, 2, 3) >>> print(b) (1, 2, 3) >>> a = (2, 3, 4) >>> print(a) (2, 3, 4) >>> print(b) (1, 2, 3)

在列表中,如果使用这种复制方式,实现的效果是两个变量指向同一个列表而此处 a 与 b 元组是完全不同的两个元组

1|6删除元组

可以使用 del语句 删除整个元组,元组内部的元素是不能删除的

>>> examples = (1, 2) >>> del examples >>> examples Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'examples' is not defined

1|7元组连接组合

元组之间是可以进行连接的,通过 加号(+) 进行连接

>>> men = ('David', 'Bob') >>> women = ('Mary', 'Lisa') >>> student = men + women >>> print(student) ('David', 'Bob', 'Mary', 'Lisa')

1|8切片操作

切片操作在元组内也适用

>>> student = ('David', 'Bob', 'Mary', 'Lisa') >>> student[1:3] ('Bob', 'Mary')

与列表中的切片使用类似:[第一个元素 : 第二个元素]

  • 若两个元素都指定,从第一个元素开始,一直到第二个元素(不包含第二个元素)
  • 若第一个元素未指定,则表示从元组第一个元素开始
  • 若第二个元素未指定,则表示从第一个元素开始一直到最后一个元素
  • 若第一个元素、第二个元素都未指定,则表示整个元组
  • -1表示最后一个元素,同理 -2表示倒数第二个元素
  • 若元组为空,则无法访问 -1,会报索引错误
>>> student = () >>> type(student) <class 'tuple'> >>> print(student[-1]) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: tuple index out of range

1|9获取元组长度

使用函数 len() 可以获取元组的长度

>>> student = ('Bob', 'Sean', 'Lisa', 'Jack') >>> print(len(student)) 4

1|10元组输出格式调整

  • title() 首字母大写
  • lower() 全小写
  • upper() 全大写
>>> student = ('Bob', 'Sean', 'Lisa', 'Jack') >>> for i in student: ... print(i.title()) ... print(i.lower()) ... print(i.upper()) ... Bob bob BOB Sean sean SEAN Lisa lisa LISA Jack jack JACK

1|11列表转元组函数

使用函数 tuple(),参数为 要转化的列表

>>> cars = ['bmw', 'audi', 'toyota', 'honda'] >>> type(cars) <class 'list'> >>> tup_cars = tuple(cars) >>> print(tup_cars) ('bmw', 'audi', 'toyota', 'honda') >>> type(tup_cars) <class 'tuple'>

1|12数字元组

可以使用 range()函数tuple()函数,生成数字元组

>>> tup1 = tuple(range(1, 6)) >>> type(tup1) <class 'tuple'> >>> print(tup1) (1, 2, 3, 4, 5)

1|13元组统计函数

  • min()
  • max()
  • sum()

min()、max()对于字符串、数字元组都可以使用,而 sum() 只用于数字元组

>>> tup1 = tuple(range(1, 6)) >>> min(tup1) 1 >>> max(tup1) 5 >>> sum(tup1) 15

1|14元组查找操作

若知道要查找的值,可以使用函数 index(),参数是要查找的值

>>> tup1 = tuple(range(1, 6)) >>> print(tup1.index(1)) 0

统计查找的值在元组中出现了多少次,可以使用函数 count(),参数是要统计的值

>>> tup = (1, 1, 1, 2, 2, 3, 4, 5) >>> print(tup.count(1)) 3 >>> print(tup.count(2)) 2 >>> print(tup.count(3)) 1

__EOF__

本文作者在青青草原上抓羊
本文链接https://www.cnblogs.com/seansheep/p/14362056.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   SeanSiyang  阅读(134)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示