python3元组tuple – Python3教程

上一章Python教程请查看:python3列表list
在本文中,你将学习关于Python元组的所有内容,更具体地说,什么是元组、如何创建它们、何时使用它们以及你应该熟悉的各种方法。
Python中的tuple类似于列表,两者之间的区别是,一旦tuple被赋值,我们就不能更改它的元素,而在列表中,元素是可以更改的。
创建一个元组元组是通过将所有项(元素)放在圆括号()中,用逗号分隔来创建的,圆括号是可选的,但是,最好使用它。
元组可以有任意数量的项,它们可以是不同类型的(整数、浮点数、列表、字符串等)。

# 空元组 my_tuple = () print(my_tuple)# 输出: ()# 包含整数的元组 my_tuple = (1, 2, 3) print(my_tuple)# 输出: (1, 2, 3) # 包含混合数据类型的元组 my_tuple = (1, "Hello", 3.4) print(my_tuple)# 输出: (1, "Hello", 3.4)# 嵌套元组 my_tuple = ("mouse", [8, 4, 6], (1, 2, 3))# 输出: ("mouse", [8, 4, 6], (1, 2, 3)) print(my_tuple)

元组也可以在不使用括号的情况下创建,这就是所谓的元组包装。
my_tuple = 3, 4.6, "dog" print(my_tuple)# 输出: 3, 4.6, "dog" # 元组拆包也是可能的 a, b, c = my_tupleprint(a)# 3 print(b)# 4.6 print(c)# dog

创建一个只有一个元素的tuple有点棘手。
仅在括号内包含一个元素是不够的,我们需要一个逗号来表示它实际上是一个元组。
my_tuple = ("hello") print(type(my_tuple))# < class 'str'># 创建一个只有一个元素的元组 my_tuple = ("hello",) print(type(my_tuple))# < class 'tuple'> # 括号是可选的 my_tuple = "hello", print(type(my_tuple))# < class 'tuple'>

访问元组元素我们可以通过多种方式访问元组的元素。
1.索引
我们可以使用索引操作符[]来访问tuple中的一个项,其中索引从0开始。
所以,一个有6个元素的元组的索引范围是从0到5,尝试访问tuple之外的元素(例如6、7、…)将引发一个IndexError。
索引必须是整数,所以我们不能使用浮点数或其他类型,否则将导致类型错误。
同样,使用嵌套索引访问嵌套元组,如下面的示例所示。
my_tuple = ('p','e','r','m','i','t')print(my_tuple[0])# 'p' print(my_tuple[5])# 't'# IndexError: list index out of range # print(my_tuple[6])# 索引必须是整数 # TypeError: list indices must be integers, not float # my_tuple[2.0]# 嵌套元组 n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))# 嵌套索引 print(n_tuple[0][3])# 's' print(n_tuple[1][1])# 4

2. 负索引
Python允许对它的序列进行负索引。
下标-1表示最后一项,下标-2表示倒数第二项,依此类推。
my_tuple = ('p','e','r','m','i','t')# 输出: 't' print(my_tuple[-1])# 输出: 'p' print(my_tuple[-6])

3.切片
我们可以使用切片操作符——冒号“:”来访问元组中的一系列项。
my_tuple = ('a','b','c','d','e','f,'g','h','i')print(my_tuple[1:4])print(my_tuple[:-7])print(my_tuple[7:])print(my_tuple[:])

通过将索引考虑到如下所示的元素之间,切片可以得到最佳的可视化效果。因此,如果我们想要访问一个范围,我们需要从tuple中切片的索引。
python3元组tuple &#8211; Python3教程

文章图片
更改一个元组与列表不同,元组是不可变的。
这意味着一旦元组的元素被分配,它就不能被改变,但是,如果元素本身是类似list的可变数据类型,则可以更改其嵌套项。
我们还可以将元组分配给不同的值(重新分配)。
my_tuple = (4, 2, 3, [6, 5])# TypeError: 'tuple' object does not support item assignment # my_tuple[1] = 9# 但是,可变元素的项可以更改 my_tuple[3][0] = 9# 输出: (4, 2, 3, [9, 5]) print(my_tuple)# 元组可以重新分配 my_tuple = ('a','b','c','d','e','f,'g','h','i')print(my_tuple)

我们可以使用+运算符来组合两个元组,这也称为连接。
我们还可以使用*操作符重复元组中的元素一定次数。
+和*操作都会产生一个新的元组。
# 输出: (1, 2, 3, 4, 5, 6) print((1, 2, 3) + (4, 5, 6))# 重复操作 # 输出: ('Repeat', 'Repeat', 'Repeat') print(("Repeat",) * 3)

删除一个元组如上所述,我们不能更改元组中的元素,这也意味着我们不能从tuple中删除或删除项。
但是使用关键字del完全删除一个tuple是可能的。
my_tuple = ('a','b','c','d','e','f,'g','h','i')# 不能删除元素 # TypeError: 'tuple' object doesn't support item deletion # del my_tuple[3]# 可以删除整个元组 del my_tuple# NameError: name 'my_tuple' is not defined print(my_tuple)

元组的方法【python3元组tuple – Python3教程】添加项或删除项的方法在tuple中不可用,只有以下两种方法可用。
Python Tuple元组的方法
方法 说明
count(x) 返回x的数量
index(x) 返回第一项的下标,该下标等于x
一些Python元组方法的例子:
my_tuple = ('a','p','p','l','e',)print(my_tuple.count('p'))# 输出: 2 print(my_tuple.index('l'))# 输出: 3

其他元组操作1. 元组成员测试
我们可以使用关键字in来测试一个项是否存在于一个元组中。
my_tuple = ('a','p','p','l','e',)# 输出: True print('a' in my_tuple)# 输出: False print('b' in my_tuple)# 输出: True print('g' not in my_tuple)

2. 遍历一个元组
使用for循环,我们可以遍历元组中的每个项。
# 输出: # Hello AAA # Hello BBB for name in ('AAA','BBB'): print("Hello",name)

元组相对于列表的优点由于元组与列表非常相似,所以它们也都用于类似的情况。
但是,与列表相比,实现tuple有一定的优势,以下是一些主要优点:
  • 我们通常对异构(不同)数据类型使用tuple,对同构(类似)数据类型使用list。
  • 由于元组是不可变的,因此遍历元组比使用列表要快,所以有一个轻微的性能提升。
  • 包含不可变元素的元组可以用作字典的键,对于列表,这是不可能的。
  • 如果数据没有变化,将其实现为tuple将保证它保持写保护。

    推荐阅读