python元組和序列

2021-09-19 19:25:44 字數 1501 閱讀 3977

我們看到列表和字串有很多共同特性,例如索引和切片操作。他們是 序列 資料型別(參見 序列型別 --- list, tuple, range)中的兩種。隨著 python 語言的發展,其他的序列型別也會被加入其中。這裡介紹另一種標準序列型別: 元組。

乙個元組由幾個被逗號隔開的值組成,例如

>>> t[0]

12345

>>> t

(12345, 54321, 'hello!')

>>> # tuples may be nested:

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

>>> u

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

>>> # tuples are immutable:

... 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])

如你所見,元組在輸出時總是被圓括號包圍的,以便正確表示巢狀元組。輸入時圓括號可有可無,不過經常會是必須的(如果這個元組是乙個更大的表示式的一部分)。給元組中的乙個單獨的元素賦值是不允許的,當然你可以建立包含可變物件的元組,例如列表。

雖然python元組可能看起來與列表很像,但它們通常是在不同的場景被使用,並且有著不同的用途。元組是 immutable (不可變的),其序列通常包含不同種類的元素,並且通過解包(這一節下面會解釋)或者索引來訪問(如果是 namedtuples 的話甚至還可以通過屬性訪問)。列表是 mutable (可變的),並且列表中的元素一般是同種型別的,並且通過迭代訪問。

乙個特殊的問題是構造包含0個或1個元素的元組:為了適應這種情況,語法有一些額外的改變。空元組可以直接被一對空圓括號建立,含有乙個元素的元組可以通過在這個元素後新增乙個逗號來構建(圓括號裡只有乙個值的話不夠明確)。醜陋,但是有效。例如

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

>>> len(empty)

0>>> len(singleton)

1>>> singleton

('hello',)

語句 t = 12345, 54321, 'hello!' 是 元組打包 的乙個例子:值 12345, 54321 和 'hello!' 被打包進元組。其逆操作也是允許的

這被稱為 序列解包 也是很恰當的,因為解包操作的等號右側可以是任何序列。序列解包要求等號左側的變數數與右側序列裡所含的元素數相同。注意python可變引數其實也只是元組打包和序列解包的組合。

Python序列之列表和元組

列表的各個元素以逗號分隔,寫在方括號中。lst 1,2,3,4 list函式可以用於將所有型別的列表轉化為列表 list其實是一種型別,相當於型別轉換 list hello h e l l o 而 join somelist 可以將乙個由字元組成的序列轉換為字串。因為字串不能被修改,所以可以用lis...

Python序列之元組

元組屬於python序列中的一種,是一種容器型別,它可以是任意物件的有序集合,不可變物件,長度固定,支援巢狀 異構 建立元組和簡單,只需要將元素用括號 可選 括起來,並使用逗號分隔符 即使只有乙個元素 來分隔元素即可 一 生成乙個元組 t1 1,2,3,4,5 print t1 1,2,3,4,5 ...

Python學習筆記 元組,序列

1.1 元組 tuple 戴上了枷鎖的列表 1.1.1 建立和訪問乙個元組 1 建立列表是使用 建立元組大部分使用 2 訪問方式一樣 3 切片拷貝一樣 4 列表裡的元素隨意更改 元組裡的元素不可更改 5 如果建立只有乙個元素的元組,需要在元素後面加上逗號,否則是乙個普通的元素 例如 8 8 與 8 ...