元組和列表是近親,列表允許並且提供了方法來改變它的值,但元組是不可改變的,即不允許你改變它的值----這也是它沒有方法的部分原因。
元組的主要作用是作為參數傳遞給函數調用、或是從函數調用那里獲得參數時,保護其內容不被外部接口修改。
元組在前台的用武之地不大,但是在后台卻是使用得相當頻繁的。
一個例子說明元組:
>>> a = ("one", "two")
>>> a[0]
'one'
>>> b = ("just-one")
>>> b[0]
'j'
>>> c = ("just-one", )
>>> c[0]
'just-one'
>>> d = "just-one",
>>> d[0]
'just-one'
元組是由逗號決定的,而不是小括號。所以b在這里只是一個字符串而已,這就是為什么b[0]返回的是字符串中的第一個字母。而小括號的最后一個逗號則決定了那是一個元組,所以c[0]返回的正是我們希望的結果。我們甚至可以整個去掉小括號,就像上面例子中的d一樣----雖然通常這樣做不太好。Python的宗旨之一就是盡量顯式地表達意思而不要依賴於默認行為。
內置序列函數和工廠函數
str:(可打印)字符串表示
list:列表表示
tuple:元組表示
len:對象的勢
max:序列中“最大的”對象
range:給定范圍內可迭代的數字
sorted:返回排好序的列表
sum:列表值加和(數字)
any:是不是有元素為True?
zip:返回Ngen元組的迭代器,其中每個元組包含了N個序列里對應的元素
@雖然以上很多函數的描述都標為序列,但是實際上這些函數都可以用在所有“可迭代”對象上。這里說的可迭代對象是指任何類似序列的數據結構,只要它可迭代就行,比如序列、迭代器、生成器、字典的鍵值和文件里的行等。
@zip函數接受多個序列,然后將每個序列對應位置的元素組織在一起組成一個新的元組,最后返回由這些元組組成的列表。它地長度由參數序列中最短的長度決定。舉個簡單的例子:
>>> zip([1, 2, 3], ("a", "b", "c"))
[(1, 'a'), (2, 'b'), (3, 'c')]