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将保证它保持写保护。

以上是 python3元组tuple &#8211; Python3教程 的全部内容, 来源链接: utcz.com/p/203662.html

回到顶部