Python循环遍历列表

时间:2013-01-13 01:45:55

标签: python

对于某些人来说这可能是微不足道的但是我在Python中查看2d数组(?)时遇到了麻烦。

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

如何循环浏览此列表?我试过这个,但显然它不起作用。

for item in orderList:
        print item;

**如果您可以将我引导至包含此信息的教程或网站,我会满意。

3 个答案:

答案 0 :(得分:11)

您可以使用元组解包来遍历所有内容:

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'

答案 1 :(得分: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)

答案 2 :(得分: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来演示语法。

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