2013-01-13 303 views
0

對於某些人來說這可能是微不足道的,但我無法在Python中查看2d數組(?)。Python循環遍歷列表

orderList = [ ('apples', 2.0), ('pears', 3.0), ('limes', 4.0) ] 

如何循環瀏覽此列表?我試過這個,但顯然這不起作用。

for item in orderList: 
     print item; 

**如果你可以指導我的教程或網站有這個信息,我會滿足。

+1

你期望輸出什麼?你有什麼作品... – Tim

+0

你有沒有嘗試刪除分號? – Ernir

+0

@Ernir:分號是多餘的,不是非法的 – inspectorG4dget

回答

10

您可以使用元組通過一切拆包循環:

for fruit, quantity in orderList: 
    print 'I have', quantity, fruit + 'es' 

你也可以做到這一點從for循環內:

for fruit_info in orderList: 
    fruit, quantity = fruit_info 

    print 'I have', quantity, fruit + 'es' 
+0

謝謝!!正是我需要的 – ealeon

0

你的代碼工作沒有任何問題

orderList = [ ('apples', 2.0), ('pears', 3.0), ('limes', 4.0) ] 
for item in orderList: 
    print item;   #you don't need `;` but it is not a problem to leave it 
>>> 
('apples', 2.0) 
('pears', 3.0) 
('limes', 4.0) 
0

有幾種方法可以遍歷列表。

最常見的是對每個環路

for fruit in orderList: 
    print fruit 

一種更有效的變化是使用發電機,它也值得注意的是,發電機可迭代序列。

def generator(fruits): 
    for fruit in fruits: 
     yield fruit 

generate = generator(orderList) 
firstFruit = generate.next() 
// Doing complex calculations before continuing the iteration 
answer = 21 + 21 
secondFruit = generate.next() 

更優雅的方法是使用高階函數'map'。地圖也可以返回一個值。如果你想將每種水果的價格或數量提高5%,你只需要做一個簡單的功能。

def display(fruit): 
    print fruit // map takes in a function as an argument and applies it to each element of the sequence. 

map(display, orderList) 

// You could also use a generator 
map(display, generate) 

我能想到的最後一種方法是使用壓縮。壓縮是一種內置的迭代形式,現在可用於大多數標準庫數據結構。如果您想使用序列創建新列表,這很有用。我很懶,所以我只是重複使用顯示來簡化語法。

[ display(fruit) for fruit in orderList ] 
[ display(fruit) for fruit in generate ]