个性化阅读
专注于IT技术分析

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_tuple

print(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中切片的索引。

元素在Python中从列表中切片

更改一个元组

与列表不同,元组是不可变的。

这意味着一旦元组的元素被分配,它就不能被改变,但是,如果元素本身是类似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)

元组的方法

添加项或删除项的方法在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将保证它保持写保护。
赞(0)
未经允许不得转载:srcmini » python3元组tuple – Python3教程

评论 抢沙发

评论前必须登录!