列表
list
是處理一組有序項(xiàng)目的數(shù)據(jù)結(jié)構(gòu),即你可以在一個(gè)列表中存儲(chǔ)一個(gè) 序列 的項(xiàng)目。假想你有一個(gè)購物列表,上面記載著你要買的東西,你就容易理解列表了。只不過在你的購物表上,可能每樣?xùn)|西都獨(dú)自占有一行,而在Python中,你在每個(gè)項(xiàng)目之間用逗號(hào)分割。
列表中的項(xiàng)目應(yīng)該包括在方括號(hào)中,這樣Python就知道你是在指明一個(gè)列表。一旦你創(chuàng)建了一個(gè)列表,你可以添加、刪除或是搜索列表中的項(xiàng)目。由于你可以增加或刪除項(xiàng)目,我們說列表是 可變的 數(shù)據(jù)類型,即這種類型是可以被改變的。
盡管我一直推遲討論對(duì)象和類,但是現(xiàn)在對(duì)它們做一點(diǎn)解釋可以使你更好的理解列表。我們會(huì)在相應(yīng)的章節(jié)詳細(xì)探索這個(gè)主題。
列表是使用對(duì)象和類的一個(gè)例子。當(dāng)你使用變量i
并給它賦值的時(shí)候,比如賦整數(shù)5
,你可以認(rèn)為你創(chuàng)建了一個(gè)類(類型)int
的對(duì)象(實(shí)例)i
。事實(shí)上,你可以看一下help(int)
以更好地理解這一點(diǎn)。
類也有方法,即僅僅為類而定義地函數(shù)。僅僅在你有一個(gè)該類的對(duì)象的時(shí)候,你才可以使用這些功能。例如,Python為list
類提供了append
方法,這個(gè)方法讓你在列表尾添加一個(gè)項(xiàng)目。例如mylist.append('an item')
列表mylist
中增加那個(gè)字符串。注意,使用點(diǎn)號(hào)來使用對(duì)象的方法。
一個(gè)類也有域,它是僅僅為類而定義的變量。僅僅在你有一個(gè)該類的對(duì)象的時(shí)候,你才可以使用這些變量/名稱。類也通過點(diǎn)號(hào)使用,例如mylist.field
。
例9.1 使用列表
shoplist = [
'apple'
,
'mango'
,
'carrot'
,
'banana'
]
print
'I have'
,
len
(shoplist),
'items to purchase.'
print
'These items are:'
,
for
item
in
shoplist:
print
item,
print
'\nI also have to buy rice.'
shoplist.append(
'rice'
)
print
'My shopping list is now'
, shoplist
print
'I will sort my list now'
shoplist.sort()
print
'Sorted shopping list is'
, shoplist
print
'The first item I will buy is'
, shoplist[
0
]
olditem = shoplist[
0
]
del
shoplist[
0
]
print
'I bought the'
, olditem
print
'My shopping list is now'
, shoplist
(源文件:code/using_list.py)
輸出
$ python using_list.py
I have 4 items to purchase.
These items are: apple mango carrot banana
I also have to buy rice.
My shopping list is now ['apple', 'mango', 'carrot', 'banana', 'rice']
I will sort my list now
Sorted shopping list is ['apple', 'banana', 'carrot', 'mango', 'rice']
The first item I will buy is apple
I bought the apple
My shopping list is now ['banana', 'carrot', 'mango', 'rice']
它如何工作
變量shoplist
是某人的購物列表。在shoplist
中,我們只存儲(chǔ)購買的東西的名字字符串,但是記住,你可以在列表中添加 任何種類的對(duì)象 包括數(shù)甚至其他列表。
我們也使用了for..in
循環(huán)在列表中各項(xiàng)目間遞歸。從現(xiàn)在開始,你一定已經(jīng)意識(shí)到列表也是一個(gè)序列。序列的特性會(huì)在后面的章節(jié)中討論。
注意,我們?cè)?code>print語句的結(jié)尾使用了一個(gè) 逗號(hào) 來消除每個(gè)print
語句自動(dòng)打印的換行符。這樣做有點(diǎn)難看,不過確實(shí)簡單有效。
接下來,我們使用append
方法在列表中添加了一個(gè)項(xiàng)目,就如前面已經(jīng)討論過的一樣。然后我們通過打印列表的內(nèi)容來檢驗(yàn)這個(gè)項(xiàng)目是否確實(shí)被添加進(jìn)列表了。打印列表只需簡單地把列表傳遞給print
語句,我們可以得到一個(gè)整潔的輸出。
再接下來,我們使用列表的sort
方法來對(duì)列表排序。需要理解的是,這個(gè)方法影響列表本身,而不是返回一個(gè)修改后的列表——這與字符串工作的方法不同。這就是我們所說的列表是 可變的 而字符串是 不可變的 。
最后,但我們完成了在市場購買一樣?xùn)|西的時(shí)候,我們想要把它從列表中刪除。我們使用del
語句來完成這個(gè)工作。這里,我們指出我們想要?jiǎng)h除列表中的哪個(gè)項(xiàng)目,而del
語句為我們從列表中刪除它。我們指明我們想要?jiǎng)h除列表中的第一個(gè)元素,因此我們使用del shoplist[0]
(記住,Python從0開始計(jì)數(shù))。
如果你想要知道列表對(duì)象定義的所有方法,可以通過help(list)
獲得完整的知識(shí)。