Python

Python 知识量:10 - 41 - 150

7.2 元组><

元组的基本概念- 7.2.1 -

元组是一种不可变序列,其包含0个或多个值。元组元素可以是任何Python值,同一个元组的元素可以是不同类型。

在结构上,元组用小括号括起来表示,其中的每个元素用逗号分隔。空元组用()表示,单元素元组(即:只含有一个元素的元组)其单元素后面的逗号不能省略。下面是一些元组的示例:

>>> box=(1,-62,'hello',(0,5),3.14)
>>> box
(1, -62, 'hello', (0, 5), 3.14)
>>> len(box)
5
>>> box[2]
'hello'
>>> box[-2]
(0, 5)
>>> box[-2][1]
5

下面利用type命令查看一下元组的类型:

>>> type(box)
<class 'tuple'>
>>> type(box[-1])
<class 'float'>
>>> type(box[-2])
<class 'tuple'>

通过以上代码可见,元组中可以包含不同类型的元素,甚至包含其他元组也可以。下面是单元素元组的情况:

>>> type(())
<class 'tuple'>
>>> type((7,))
<class 'tuple'>
>>> type((7))  # 7后面没有逗号,成为了一个表达式。
<class 'int'>

单元素元组的元素后面的逗号如果省略,就变为了一个用小括号括起来的表达式。包含多个元素的元组,其最后一个元素后面不必加逗号,但是总是加上一个逗号,可以避免遇到单元素元组时因为疏漏而犯错。

元组不可变- 7.2.2 -

元组的不可变意味着一旦创建了一个元组,就不能再对其进行修改。除了元组之外,字符串、整数、浮点数也都具有不可变性。不可变性可以提高元组的使用安全性,因为它不会无意间被改动。

在应用中,如果确实需要修改已经存在的元组,只能重新创建一个新元组,并用经过修改加工后的老元组元素进行填充。下面是一个删除元组头部元素的变通方法:

>>> box=(1,2,3,4,5)
>>> box
(1, 2, 3, 4, 5)
>>> box_mini=box[1:]
>>> box_mini
(2, 3, 4, 5)

元组函数- 7.2.3 -

Python提供的常用元组函数如下表所示:

函数名返回值
x in tuple如果x是元组tuple的元素,返回True,否则返回False。
len(tuple)元组tuple的元素个数。
tuple.count(x)x在元组tuple中出现的次数。
tuple.index(x)x在元组tuple中第一次出现的位置索引;如果没找到,将引发ValueError异常。

下面是元组函数的应用示例:

>>> animals=('dog','cat','pig')
>>> animals
('dog', 'cat', 'pig')
>>> 'cat' in animals
True
>>> 'bird' in animals
False
>>> len(animals)
3
>>> animals.count('dog')
1
>>> animals.index('pig')
2
>>> animals.index('bird')
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    animals.index('bird')
ValueError: tuple.index(x): x not in tuple

可以使用运算符*和+来拼接元组:

>>> number=(1,2,3,4,5)
>>> number2=(6,7,8,9,10)
>>> number+number2
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
>>> number*2
(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
>>> number+animals
(1, 2, 3, 4, 5, 'dog', 'cat', 'pig')