Python3.2官方文档教程---元组与序列


我们看到列表和字符串有许多相同的属性,例如索引和切片操作符。以下是两个关于序列数据类型的例子。由于python是一种不断演变的语言,其他的序列数据类型可以被添加。现在已经有一种标准的序列数据类型:元组

一个元组是由一些被逗号分隔的熟知组成的。例如:

>>> t = 12345, 54321, ’hello!’

>>> t[0]

12345

>>> t

(12345, 54321, ’hello!’)

>>> # 元组也可以嵌套

... u = t, (1, 2, 3, 4, 5)

>>> u

((12345, 54321, ’hello!’), (1, 2, 3, 4, 5))

>>> # 元组是不可变的

... t[0] = 88888

Traceback (most recent call last):

File "", line 1, in

TypeError: ’tuple’ object does not support item assignment 元组不支持元素赋值,

>>> # but they can contain mutable objects: 但是可包含可变的对象。

... v = ([1, 2, 3], [3, 2, 1])

>>> v

([1, 2, 3], [3, 2, 1])

正如你看到的,当输出时元组常常被括号括起来,因此嵌套元组可以被正确解释。尽管常在输入时候用括号把它们包围,但是包或不包含都可以输入。 不可以对元组中的单个对象赋值,但是创建包含可变的对象的元组,比如列表。

尽管元组与列表有点相似,但是常常在不同情况和因不同的目的而使用。元组是不可变的,常常包含一个可以通过取出和索引访问元素的异构序列。列表是可变的,并且这些元素都是平等的,只能通过遍历逐次访问。

一个特殊的问题就是仅包含一个或空的元组的构建。为了符合这些规则,这语法有点特别之处。每个空元组可以被一对空括号所创建。含一个值的元组可以用一个值加上”,”进行创建。 (用括号包围单个值没有意义)。尽管看起来很丑陋,但是很有效的。例如:

>>> empty = ()

>>> singleton = ’hello’, # <-- note trailing comma

>>> len(empty)

0

>>> len(singleton)

1

>>> singleton

(’hello’,)

语句 t = 12345, 54321, ’hello!’ 是一个包含不同值的元组例子:值是 12345, 54321

and ’hello!’都放在同一个元组中。

翻转元组的操作可以如下:

>>> x, y, z = t

序列拆封要求左侧的变量数目与序列的元素个数相同。要注意的是可变参数其实只是元组封装和序列拆封的一个结合!

评论关闭