Python多列表迭代

时间:2012-05-02 17:16:57

标签: python list iteration

是否有一种聪明的方法来迭代Python中的两个列表(不使用列表理解)?

我的意思是,像这样:

# (a, b) is the cartesian product between the two lists' elements
for a, b in list1, list2:
   foo(a, b)

而不是:

for a in list1:
    for b in list2:
        foo(a, b)

3 个答案:

答案 0 :(得分:13)

itertools.product()正是如此:

for a, b in itertools.product(list1, list2):
  foo(a, b)

它可以处理任意数量的迭代,并且在这个意义上比嵌套的for循环更通用。

答案 1 :(得分:0)

for a,b in zip(list1, list2):
    foo(a,b)

zip将列表/数组的元素组合在一起元素到元组中。 e.g。

list1 = [1,2,5]
list2 = [-2,8,0]
for i in zip(list1,list2):
    print(i)
>>> (1, -2)
>>> (2, 8)
>>> (5, 0)

答案 2 :(得分:0)

使用zip,它允许您压缩两个或更多列表并一次迭代。

list= [1, 2]
list2=[3,4]
combined_list = zip(list, list2)
for a in combined_list:
        print(a)