对于某些人来说这可能是微不足道的但是我在Python中查看2d数组(?)时遇到了麻烦。
orderList = [ ('apples', 2.0), ('pears', 3.0), ('limes', 4.0) ]
如何循环浏览此列表?我试过这个,但显然它不起作用。
for item in orderList:
print item;
**如果您可以将我引导至包含此信息的教程或网站,我会满意。
答案 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 ]