【0014】Python数据类型-元组类型详解

如果你觉得我的文章写的不错,请关注我哟,请点赞、评论,收藏此文章,谢谢!

本文内容体系结构如下:

元组是Python中一种基本且重要的数据类型,它用于存储一组有序且不可变的元素。本文将详细讲解元组的创建方式、访问方法以及常用操作,如元组的拼接、重复和成员检查等。元组是Python编程中的基础知识点,掌握它对于提高编程能力和解决实际问题具有重要意义。

一、什么是元组(Tuple)

元组(Tuple)是Python中的一种数据结构,用于存储一系列有序的、可重复的项目集合。元素中的项目可以是同类型的,也可以是不同类型的数据,比如数字、字符串、甚至是另一个元组(嵌套元组)。 Python 的元组与列表类似,不同之处在于元组是不可变序列,意味着元组的元素不能修改。

复制代码
(100,200,300,400) # 存储4个int类型数据的元组
('Hello','Python','Good') # 存储3个字符串类型数据的元组
('hi',9.9,10,[100, 200])# 存储4个不同类型数据的元组
(('Hello',100,10), ('Python',200,20,30)) # 嵌套元组

元组使用小括号 ( ) ,列表使用方括号 [ ]

元组作为不可变对象,其操作速度略快于列表,更适合保存无须修改的一系列固定值。

二、创建元组

要创建一个元组,可以使用小括号 () 将一系列元素包围起来,元素之间用英文逗号 , 分隔,小括号也可以省略不写,常见做法不省略。或者使用tuple()函数创建元组。

注意:如果创建的元组中只有一个元素,需要在这个元素后面添加英文逗号,才是元组。

2.1 使用 () 直接创建元组

使用()创建元组后,一般使用=将它赋值给某个变量。具体格式如下:

python 复制代码
# 包含多个元素的元组
tuplename = (valu1 , value2 , ... , valuen)
# 包含一个元组的元组
tuplename = (value,)

其中,tuplename 表示元组变量名,value1~ valuen 表示元组元素。

示例代码:

python 复制代码
# 使用()直接创建元组
# 创建1个空元组
tuple01 = ()
print(tuple01) # ()
print(type(tuple01)) # <class 'tuple'>

# 创建1个包含1个int类型数据的元组,注意创建包含一个元素的元组,需要在元素后面添加一个英文逗号,才表示创建的是元组
tuple02  = (10,)
print(tuple02) # (10)
print(type(tuple02)) # <class 'tuple'>

# 创建1个包含2个字符串类型数据的元组
tuple03  = ("Hello","Python")
print(tuple03) # ('Hello', 'Python')
print(type(tuple03)) # <class 'tuple'>

# 创建1个包含4个不同类型数据的元组
tuple04 = (100,"Hi",12.5,True)
print(tuple04) # (100, 'Hi', 12.5, True)
print(type(tuple04)) # <class 'tuple'>

# 创建1个嵌套元组
tuple05 = ((10,20,30),("abc","qwe"))
print(tuple05) # ((10, 20, 30), ('abc', 'qwe'))
print(type(tuple05)) # <class 'tuple'>

# 创建元组的小括号可以省略,不建议省略,可读性不好
tuple06 = 10,20,30
print(tuple06) # (10, 20, 30)
print(type(tuple06)) # <class 'tuple'>

2.2 使用tuple() 函数创建元组

Python 还提供了一个内置的函数 tuple(),使用它可以将字符串、列表、range对象等类型转换为元组类型。例如:

python 复制代码
# 使用tuple()函数创建元组
# 创建1个空元组
tuple01 = tuple()
print(tuple01) # ()
print(type(tuple01)) # <class 'tuple'>

# 将字符串转换成元组
tuple02 = tuple("hello")
print(tuple02) # ('h', 'e', 'l', 'l', 'o')
print(type(tuple02)) # <class 'tuple'>

# 将列表转换成元组
list01 = ['Python', 'Java', 'C++', 'JavaScript']
tuple03 = tuple(list01)
print(tuple03) # ('Python', 'Java', 'C++', 'JavaScript')
print(type(tuple03)) # <class 'tuple'>

# 将字典转换成元组。注意:将字典的键存储到元组中
dict01 = {'a':100, 'b':42, 'c':9}
tuple04 = tuple(dict01)
print(tuple04) # ('a', 'b', 'c')
print(type(tuple04)) # <class 'tuple'>

# 将区间转换成元组
range01 = range(1, 6) #  range(1, 6)产生数字1,2,3,4,5
tuple05 = tuple(range01)
print(tuple05) # (1, 2, 3, 4, 5)
print(type(tuple05)) # <class 'tuple'>

三、删除元组

元组中的元素值是不允许删除的,但是整个元组是可以删除的。当元组不再使用时,使用del命令删除整个元组。删除元组后,再次使用元组会报NameError错误。

复制代码
tuple01 = (10,20)
print(tuple01) # (10, 20)
# 删除元组
del tuple01
print(tuple01) # NameError: name 'tuple01' is not defined

代码执行效果如下:

四、访问元组元素

元组是 Python 序列 的一种,元组中的每个元素都有一个索引(Index) ,也可以称之为下标 ,索引分正向索引和负向索引。正向索引从左往右计数,第一个元素索引为0,第二个元素索引为1,第三个元素索引为2,以此类推。负向索引从右往左计数,第一个元素索引为-1,第二个元素索引为-2,第三个元素索引为-3,以此类推。你可以使用索引来访问元组中的特定元素。

4.1 使用索引访问单个元素

我们可以直接通过元素索引访问元组中的某个元素,但是注意,索引不要超过元组索引范围,否则会报错。

python 复制代码
tuple01 = ("Hello","Python","Good!","Hi","World")

# 访问第1个元素
result1 = tuple01[0]
print(result1) # Hello

# 访问第2个元素
result2 = tuple01[1]
print(result2) # Python

# 访问最后一个元素
result3 = tuple01[len(tuple01)-1]
print(result3) # World
result4 = tuple01[-1]
print(result4) # World

运行结果如下图所示:

4.2 使用切片访问多个元素

4.2.1 元组切片

切片是指从元组中提取一部分子元组。切片通过指定起始索引和结束索引来实现,语法为[start:end],其中start是起始索引(包含),end是结束索引(不包含)。如果省略start,则表示从元组开头开始;如果省略end,则表示到元组结尾为止。

python 复制代码
tuple01 = (10,20,30,40,50,60,70,80,90)
print(tuple01) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

slice_tuple01 = tuple01[0:5]
print(slice_tuple01) # (10, 20, 30, 40, 50)
# 切片操作不会改变元组本身内容
print(tuple01) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

# 省略起始索引
slice_tuple02 = tuple01[:5]
print(slice_tuple02) # (10, 20, 30, 40, 50)
# 切片操作不会改变元组本身内容
print(tuple01) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

# 省略结束索引
slice_tuple03 = tuple01[7:]
print(slice_tuple03) # (80, 90)
# 切片操作不会改变元组本身内容
print(tuple01) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

# 使用负索引
slice_tuple04 = tuple01[-6:-1]
print(slice_tuple04) # (40, 50, 60, 70, 80)
# 切片操作不会改变元组本身内容
print(tuple01) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

# 获取整个元组(相当于复制)
slice_tuple05 = tuple01[:]
print(slice_tuple05) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

代码运行结果如下图所示:

4.2.2 元组的步长切片

除了基本的切片操作,Python还支持带步长的切片,语法为[start:end:step],其中step表示步长,可以是正数或负数。

python 复制代码
tuple01 = (10,20,30,40,50,60,70,80,90)
print(tuple01) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

# 正向步长
slice_tuple01 = tuple01[::2]
print(slice_tuple01) # (10, 30, 50, 70, 90)
# 切片操作不会改变元组本身内容
print(tuple01) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

# 反向步长
slice_tuple02 = tuple01[::-1]  # 反转元组
print(slice_tuple02) # (90, 80, 70, 60, 50, 40, 30, 20, 10)
# 切片操作不会改变元组本身内容
print(tuple01) # (10, 20, 30, 40, 50, 60, 70, 80, 90)

代码运行结果如下图所示:

五、遍历元组元素

按照元组元素的索引依次获取元组中所有的元素,称之为元组的遍历。常用的遍历方式有四种:while循环遍历、for循环遍历、range()函数索引遍历和enumerate()函数遍历。

5.1 while循环遍历

使用变量index存储元组索引,使用元组名[索引]输出元素。索引取值范围0-len(元组名),包含索引0,不包含索引len(元组名)

复制代码
tuple01 = [10,20,30,40,50,60,70,80,90]

# 定义变量存储元组索引值
index = 0
while index < len(tuple01):
    print(tuple01[index],end=" ") 
    index+=1

运行结果如下图所示:

5.2 for循环遍历

for循环遍历元组,for后面的变量存储元组中的元素值,元组名放到in关键字的后面。

复制代码
tuple01 = [10,20,30,40,50,60,70,80,90]

for val in tuple01:
    print(val,end=" ") 

运行结果如下图所示:

5.3 range()函数索引遍历

用range()函数进行元组的索引遍历,然后通过索引获取值,可以按照以下三步走:

  1. 通过len(tupleName)获取元组的长度

  2. 通过range(len(tupleName))获取元组的所有索引,从0到len(tupleName)-1。

  3. 通过for循环获取元组中的每个索引对应的元素。

    tuple01 = (10,20,30,40,50,60,70,80,90)

    range()函数获取元组索引范围,index变量存储索引值,tuple01[index]获取数据

    for index in range(len(tuple01)):
    print(tuple01[index],end=" ")

运行结果如下图所示:

5.4 enumerate()函数遍历

enumerate()函数用于将一个可遍历的数据对象(如字符串、列表、元组等)变为一个索引序列,同时输出索引和元素内容,一般与for循环配合使用。

复制代码
tuple01 = (10,20,30,40,50,60,70,80,90)

# index存储元素的索引,value存储索引对应的值
for index,value in enumerate(tuple01):
    print(f"索引{index}对应的值:{value}")

运行结果如下图所示:

六、增加元组元素

因为元组是不可变序列,所以元组中的元素值是不允许增加、删除的,但我们可以对元组进行连接组合和扩展操作等,严格意义上来说,这些操作都不是增加元素到元组中,而是创建一个新的元组

6.1 使用"+"运算符将元素添加到元组中

元组是序列的一种,可以使用+对多个元组进行连接,这样就相当于在第一个元组的末尾添加了另一个元组。但是严格意义上来说,+操作并不是真正的为元组增加元素,而是创建了一个包含多个元组中所有元素的新元组。该操作涉及大量元素的复制,因此操作效率低,在涉及大量元素添加时,不建议使用此方式。

python 复制代码
tuple01 = (10,20,30)
tuple02 = (40,50,60,30,80)
# +操作前元组数据
print(tuple01)  # (10, 20, 30)
print(tuple02) # (40, 50, 60, 30, 80)

tuple03 = tuple01 + tuple02
# +操作之后tuple03元组数据
print(tuple03) # (10, 20, 30, 40, 50, 60, 30, 80)

# +操作后元组数据,原来元组元素不变
print(tuple01) # (10, 20, 30)
print(tuple02) # (40, 50, 60, 30, 80)

运行结果如下图所示:

6.2 使用乘法来扩展元组对象

将1个元组与1个整数相乘,生成一个新元组,新元组中的元素是原来元组中所有元素重复整数次后的元素。

python 复制代码
tuple01 = (100, 200, 300)
# 乘法操作前元组元素
print(tuple01) # (100, 200, 300)
print(id(tuple01)) # 2060719629696

tuple02 = tuple01 * 3
print(tuple02) # (100, 200, 300, 100, 200, 300, 100, 200, 300)
print(id(tuple02)) # 2060716914752

# 乘法操作后元组元素
print(tuple01) # (100, 200, 300)
print(id(tuple01)) # 2060719629696

运行结果如下图所示:

可以看出,原元组的地址值没有变化,里边的元素也没有变化,生成了一个新元组,说明元组的乘法操作是创建了一个新元组。

七、修改元组元素

我们反复强调了3种不可变的标准类型(数字,字符串和元组)。在这当中,元组的不可变性更具有意义。

作为容量类型之一,元组可以存储不同的数据类型。

以元组类型存储的数据可以防止别人随意篡改,因此常常用来保存比较重要的、不需要经常修改的数据。

7.1 修改元组中的单个元素

元组中的元素时是具体的单个值时,通过索引进行修改元组中单个值会报错,具体代码如下:

复制代码
tuple01 = (10,20,30,40,50)
# 修改元组中第二个值为200
tuple01[1] = 200 # TypeError: 'tuple' object does not support item assignment

运行结果如下图所示:

但是元组真的不能修改吗,这里就有特例:

7.2 修改元组中的对象数据

python 复制代码
tuple01 = ([1, 2], 4, 5)
print(tuple01) # ([1, 2], 4, 5)
# 输出元组的地址值
print(id(tuple01)) # 1563559921344
# 输出元组里第1个元素(是一个列表)的地址值
print(id(tuple01[0])) # 1563558456704

# 修改元组中第1个元素(是一个列表)里的数据
tuple01[0][0] = 2
print(tuple01) # ([2, 2], 4, 5)
# 输出元组的地址值
print(id(tuple01)) # 1563559921344
# 输出元组里第1个元素(是一个列表)的地址值
print(id(tuple01[0])) # 1563558456704

运行结果如下图所示:

表面上看,tuple01的元素确实变了,但其实变的不是tuple的元素,而是list的元素

tuple01一开始指向的list并没有改成别的list,所以,tuple所谓的"不变"是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的。

复制代码
list01 = [10,20]
list02 = [100,200,300]
tuple01 = (list01, 4, 5)
print(tuple01) # ([1, 2], 4, 5)

# 修改元组中第1个元素(是一个列表)为另外一个列表
tuple01[0]=list02 # TypeError: 'tuple' object does not support item assignment
print(tuple01) # ([1, 2], 4, 5)

运行结果如下图所示:

从上面结果可知,当我们试图将元组中第1个元素(是一个列表)替换为另外一个列表时,程序运行就会报错,因为你替换了列表, 指向就变了,相当于对元组进行了修改,而元组是不允许修改的。

八、查找元组元素

8.1 in运算符查询元素在元组中是否存在

使用in运算符查询某个元素在元组中是否存在,如果存在返回True,如果不在返回False。

语法格式如下:

复制代码
result = 元素值 in 元组名

演示代码如下:

复制代码
tuple01 = (10,20,30,40,50,60,70)

result01 = 10 in tuple01
print("元素10在元组tuple01中存在:",result01) # 元素10在元组tuple01中存在: True

result02 = 100 in tuple01
print("元素100在元组tuple01中存在:",result02) # 元素100在元组tuple01中存在: False

运行结果如下图所示:

8.2 not in运算符查询元素在元组中是否不存在

使用not in运算符查询某个元素在元组中是否不存在,如果不存在返回True,如果存在返回False。

语法格式如下:

复制代码
result = 元素值 not in 元组名

演示代码如下:

复制代码
tuple01 = (10,20,30,40,50,60,70)

result01 = 10 not in tuple01
print("元素10在元组tuple01中存在:",result01) # 元素10在元组tuple01中存在: False

result02 = 100 not in tuple01
print("元素100在元组tuple01中存在:",result02) # 元素100在元组tuple01中存在: True

运行结果如下图所示:

8.3 index() 方法查找元组元素

index() 方法用来查找某个元素在元组中出现的位置(也就是索引),如果该元素不存在,则会导致 ValueError 错误,所以在查找之前最好in运算或使用 count() 方法判断一下。

语法格式如下:

python 复制代码
tuplename.index(obj, start, end)

其中,tuplename表示元组名称,obj 表示要查找的元素,start 表示起始位置,end 表示结束位置。

start 和 end 参数用来指定检索范围:

  • start 和 end 可以都不写,此时会检索整个元组;
  • 如果只写 start 不写 end,那么表示检索从 start 到末尾的元素;
  • 如果 start 和 end 都写,那么表示检索 start 和 end 之间的元素。

index() 方法会返回元素所在元组中的索引值。

演示代码如下:

python 复制代码
tuple01 = (10,20,30,40,20,50,60,70)
# 查找元素值20在元组中的索引
index01 = tuple01.index(20)
print("元素20在元组中第一次出现的索引:",index01) # 元素20在元组中第一次出现的索引: 1

index02 = tuple01.index(20,3,6)
print("元素20在元组索引范围[3,6)第一次出现的索引:",index02) # 元素20在元组索引范围[3,6)第一次出现的索引: 4

运行结果如下:

8.4 count()方法查找元组元素出现次数

count() 方法用来统计某个元素在元组中出现的次数。

语法格式如下:

python 复制代码
result = tuplename.count(obj)

tuplename :代表元组名

obj :表示要统计的元素。

如果 count() 返回 0,就表示元组中不存在该元素,所以 count() 也可以用来判断元组中的某个元素是否存在。

演示示例如下:

python 复制代码
tuple01 = (10,20,30,40,20,50,60,70,20)
# 查找元素值20在元组中出现的次数
result01 = tuple01.count(20)
print("元素20在元组中出现的次数:",result01) # 元素20在元组中出现的次数: 3

# 查找元素值100在元组中出现的次数
result02 = tuple01.count(100)
print("元素100在元组中出现的次数:",result02) # 元素100在元组中出现的次数: 0

# 使用count()方法判断元素20在元组中是否存在
if tuple01.count(20):
    print("元素20在元组中存在")
else:
    print("元素20在元组中不存在")

# 使用count()方法判断元素100在元组中是否存在
if tuple01.count(100):
    print("元素100在元组中存在")
else:
    print("元素100在元组中不存在")

运行结果如下图所示:

九、排序元组元素

因为元组中的元素不可修改,所以元组中没有方法对元组进行排序。但是使用sorted()函数可以对元组进行临时排序,默认是升序排序,如果要进行降序排序,需要借助参数reverse参数。sorted()函数排序的结果是产生一个列表,不是产生新的元组,该列表中存储的是元组里的所有数据。如果还需要用元组进行存储数据,可以使用tuple()函数将排序得到的列表转换为新的元组。

9.1 使用 sorted() 函数排序元组

该函数会返回升序排序的新列表

语法格式如下:

python 复制代码
sorted(iterable[,key=None][,reverse=False])
  • iterable:表示可迭代对象,在这里就是元组名
  • key为可选参数,如果指定了该参数,会使用该参数的方法进行排序
  • reverse为可选参数,设置升序还是降序,默认值为False,进行升序排序,设置为True,可以实现降序排序。

演示示例如下:

python 复制代码
tuple01 = (10,90,50,20,60,30,70,30,80,40)
print("排序前tuple01元组:",tuple01) # 排序前tuple01元组: (10, 90, 50, 20, 60, 30, 70, 30, 80, 40)

# sorted()方法是临时排序,默认是升序排序,不影响元组本身排序,产生一个升序排序的列表
result01 = sorted(tuple01)
print("升序排序操作得到的数据:",result01) # 升序排序操作得到的数据: [10, 20, 30, 30, 40, 50, 60, 70, 80, 90]
print("升序排序后得到的数据的类型:",type(result01)) # 升序排序后得到的数据的类型: <class 'list'>
# 通过tuple()函数将升序排序后的列表转换为元组
tuple02 =tuple(result01)
print(tuple02) # (10, 20, 30, 30, 40, 50, 60, 70, 80, 90)

# sorted()方法是临时排序,默认是升序排序,设置参数reverse=True产生一个降序排序的列表
result02 = sorted(tuple01,reverse=True)
print("降序排序操作得到的数据:",result02) # 降序排序操作得到的数据: [90, 80, 70, 60, 50, 40, 30, 30, 20, 10]
print("降序排序后得到的数据的类型:",type(result02)) # 降序排序后得到的数据的类型: <class 'list'>
# 通过tuple()函数将降序排序后的列表转换为元组
tuple03 =tuple(result02)
print(tuple03) # (90, 80, 70, 60, 50, 40, 30, 30, 20, 10)

print("排序后tuple01元组:",tuple01) # 排序后tuple01元组: (10, 90, 50, 20, 60, 30, 70, 30, 80, 40)

运行结果如下:

十、元组的复制

元组的复制可以使用切片访问元组,创建一个包含整个元组的切片,也就是在切片中同时省略起始索引值和结束索引值(元组名[:]),从而实现元组的复制。元组中没有copy()方法。

10.1 使用切片操作复制元组

语法格式如下:

复制代码
元组变量 = 元组名[:]

演示代码如下:

复制代码
tuple01 = (10,20,30,40,50)
print("元组tuple01:",tuple01) # 元组tuple01: (10, 20, 30, 40, 50)

# 对元组tuple0进行切片操作,省略起始索引和结束索引,获得一个包含tuple01元组所有元素的新元组
tuple02 = tuple01[:]
print("元组tuple02:",tuple02) # 元组tuple02: (10, 20, 30, 40, 50)

运行结果如下图所示:

十一、元组推导式

Python 并不直接支持"元组推导式"。

11.1 什么是推导式

Python推导式(comprehension)是一种简洁而高效的构建容器(如列表、集合、字典)的方法。它允许你用一行代码来创建容器,并且可以通过循环和条件语句来生成容器中的元素。

推导式分为列表推导式(list comprehension)、集合推导式(set comprehension)、字典推导式(dictionary comprehension)以及生成器表达式(generator expression)。

Python 并不直接支持"元组推导式",因为元组是不可变的,推导式通常用于生成可变的数据结构。不过,我们可以使用生成器表达式结合tuple()函数来间接创建元组。这种方式简洁高效。

推导式是Python中非常强大和常用的特性,可以使代码更加简洁和高效。

11.2 使用生成器表达式创建元组

你可以使用生成器表达式,然后将其传递给 tuple() 构造函数来创建一个元组。

演示示例:

复制代码
# 1:生成[0-10)之间的10个整数,存储在元组中
# 普通方式生成
list01 = []
for i in range(10):
   list01.append(i)
# 使用tuple()函数将列表转换为元组
tuple01 = tuple(list01)
print("普通方式生成的元组:",tuple01) # 普通方式生成的元组: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

# 生成器表达式结合tuple()函数生成
tuple02 = tuple(i for i in range(10))
print("生成器表达式结合tuple()函数生成的元组:",tuple02) # 生成器表达式结合tuple()函数生成的元组: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)


# 2:生成一个[1-10]之间所有整数的平方组成的元组
# 普通方式生成
list02 = []
for i in range(1,11):
    list02.append(i ** 2)
# 使用tuple()函数将列表转换为元组
tuple03 = tuple(list02)
print("普通方式生成的元组:",tuple03) # 普通方式生成的元组: (1, 4, 9, 16, 25, 36, 49, 64, 81, 100)

# 生成器表达式结合tuple()函数生成
tuple04 = tuple(i**2 for i in range(1,11))
print("生成器表达式结合tuple()函数生成的元组:",tuple04) # 生成器表达式结合tuple()函数生成的元组: (1, 4, 9, 16, 25, 36, 49, 64, 81, 100)


# 3:取出已有元组中的奇数值生成新元组
# 已有元组
tuple05 = (1,2,3,4,5,6,7,8,9,10)
# 普通方式生成
list03 = []
for i in tuple05:
    if i%2!=0:
        list03.append(i)
# 使用tuple()函数将列表转换为元组
tuple06 = tuple(list03)
print("普通方式生成的元组:",tuple06) # 普通方式生成的元组: (1, 3, 5, 7, 9)

# 生成器表达式结合tuple()函数生成
tuple07 = tuple(i for i in tuple05 if i%2!=0)
print("生成器表达式结合tuple()函数生成的元组:",tuple07) # 生成器表达式结合tuple()函数生成的元组: (1, 3, 5, 7, 9)

运行结果如下图所示:

11.3 注意事项

  1. 元组不可变性:由于元组是不可变的,推导式生成的中间结果不能通过修改来影响最终的元组内容。
  2. 语法差异 :相比于列表推导式(list comprehension),元组没有直接的推导式语法。你需要使用 tuple() 来转换生成器表达式。
  3. 生成器表达式:生成器表达式是一种惰性求值的方式,它不会立即计算结果,而是在需要时才逐一生成元素。这使得生成器表达式在内存使用上更加高效,尤其是在处理大数据集时。

十二、总结

本文详细探讨了Python中的元组类型,元组作为一种基本且重要的数据结构,用于存储有序且不可变的元素集合。我们介绍了元组的定义、创建方式,包括使用小括号直接构造和通过其他数据结构转换得到。在访问元组元素时,可以利用索引和切片技术,轻松获取所需的部分,支持正向和负向索引,以及灵活的步长设置。

元组的不变性保证了数据的安全性和一致性,但也意味着不能直接修改其元素。不过,通过连接和扩展操作,可以生成包含新元素的新元组。遍历元组时,可以采用多种循环方式,如while循环和for循环等,实现灵活的元素访问。

查找元组元素时,我们可以使用成员测试运算符(如innot in)以及相关的查找方法。尽管元组本身不支持排序操作,但可以通过外部排序函数进行临时排序,并通过类型转换获取排序后的元组形式。此外,切片操作可以用于复制元组,而不改变原始元组。最后,虽然Python没有直接的元组推导式,但结合生成器表达式可以高效地构建元组。这些操作技巧对于理解和应用元组具有重要价值。

博主辛苦写了这么详细的教程,都看到这了,还不关注博主,是不是说不过去呀???

相关推荐
郭庆汝5 分钟前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
思则变3 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络4 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find5 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取6 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector7 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习8 小时前
Python入门Day2
开发语言·python
Vertira8 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉8 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗8 小时前
黑马python(二十四)
开发语言·python