#!/usr/bin/python
# Filename: using_tuple.py
zoo = ('wolf', 'elephant', 'penguin')
print 'Number of animals in the zoo is', len(zoo)
new_zoo = ('monkey', 'dolphin', zoo)
print 'Number of animals in the new zoo is', len(new_zoo)
print 'All animals in new zoo are', new_zoo
print 'Animals brought from old zoo are', new_zoo[2]
print 'Last animal brought from old zoo is', new_zoo[2][2]
(源文件:code/using_tuple.py)
輸出
$ python using_tuple.py
Number of animals in the zoo is 3
Number of animals in the new zoo is 3
All animals in new zoo are ('monkey', 'dolphin', ('wolf', 'elephant', 'penguin'))
Animals brought from old zoo are ('wolf', 'elephant', 'penguin')
Last animal brought from old zoo is penguin
它如何工作
變量 zoo 是一個(gè)元組,我們看到 len 函數(shù)可以用來獲取元組的長(zhǎng)度。這也表明元組也是一個(gè)序列。
由于老動(dòng)物園關(guān)閉了,我們把動(dòng)物轉(zhuǎn)移到新動(dòng)物園。因此,new_zoo 元組包含了一些已經(jīng)在那里的動(dòng)物和從老動(dòng)物園帶過來的動(dòng)物。回到話題,注意元組之內(nèi)的元組不會(huì)失去它的身份。
我們可以通過一對(duì)方括號(hào)來指明某個(gè)項(xiàng)目的位置從而來訪問元組中的項(xiàng)目,就像我們對(duì)列表的用法一樣。這被稱作 索引 運(yùn)算符。我們使用 new_zoo[2]來訪問 new_zoo 中的第三個(gè)項(xiàng)目。我們使用 new_zoo[2][2]來訪問 new_zoo 元組的第三個(gè)項(xiàng)目的第三個(gè)項(xiàng)目。
含有 0 個(gè)或 1 個(gè)項(xiàng)目的元組。一個(gè)空的元組由一對(duì)空的圓括號(hào)組成,如 myempty = ()。然而,含有單個(gè)元素的元組就不那么簡(jiǎn)單了。你必須在第一個(gè)(唯一一個(gè))項(xiàng)目后跟一個(gè)逗號(hào),這樣 Python 才能區(qū)分元組和表達(dá)式中一個(gè)帶圓括號(hào)的對(duì)象。即如果你想要的是一個(gè)包含項(xiàng)目2的元組的時(shí)候,你應(yīng)該指明 singleton = (2 , )。
給 Perl 程序員的注釋 列表之中的列表不會(huì)失去它的身份,即列表不會(huì)像 Perl 中那樣被打散。同樣元組中的元組,或列表中的元組,或元組中的列表等等都是如此。只要是 Python,它們就只是使用另一個(gè)對(duì)象存儲(chǔ)的對(duì)象。