我們看到列表和字串有許多相同的屬性,例如索引和切片操作符。以下是兩個關於序列資料類型的例子。由於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 "<stdin>", line 1, in <module>
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
序列拆封要求左側的變數數目與序列的元素個數相同。要注意的是可變參數其實只是元組封裝和序列拆封的一個結合!