【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没有直接的元组推导式,但结合生成器表达式可以高效地构建元组。这些操作技巧对于理解和应用元组具有重要价值。

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

相关推荐
红队it4 分钟前
【机器学习算法】基于python商品销量数据分析大屏可视化预测系统(完整系统源码+数据库+开发笔记+详细启动教程)✅
python·机器学习·数据分析
韩zj8 分钟前
springboot调用python文件,python文件使用其他dat文件,适配windows和linux,以及docker环境的方案
windows·spring boot·python
拖拉机27 分钟前
Python(五)字典
后端·python
闲人编程34 分钟前
Canny边缘检测优化实战
python·opencv·图像识别
闲人编程38 分钟前
边缘检测基础(Sobel/Laplacian)
python·opencv·图像识别
天若有情6731 小时前
【Python】什么是列表推导式?
开发语言·python
Bruce_Liuxiaowei2 小时前
基于Flask的勒索病毒应急响应平台架构设计与实践
后端·python·flask
Channing Lewis2 小时前
python headq包介绍
python
Freak嵌入式2 小时前
一文速通 Python 并行计算:06 Python 多线程编程-基于队列进行通信
开发语言·python·多线程·面向对象·并行计算
Elendill3 小时前
【算法笔记】并查集详解
笔记·python·算法