在Python中同时向后和向前迭代两个列表

时间:2014-09-16 19:09:47

标签: python for-loop

我有两个清单:

list1 = [2,1,0]
list2 = [0,1,2]

我试过这个。

for i,j in zip(list1,list2):
    print (i,j) //This prints out 2 0, 1 1 and 0 2

但是我想要打印出2 2,1 1和0 0.所以我必须向后循环第二个循环,而我将第一个循环向前循环。我知道如何在单独的for loop中执行这些操作,但我无法弄清楚如何在一个for loop中执行此操作。

2 个答案:

答案 0 :(得分:4)

您正在寻找reversed功能。

for i, j in zip(list1, reversed(list2):
    print(i, j)

或者,根据数据类型,您可以使用花哨的slicing。这通常适用于实现切片的数据类型(例如列表,元组,numpy数组),但不会在很多其他迭代器上工作。

for i, j in zip(list1, list2[::-1]):
    print(i, j)

list2[::-1]切片意味着以-1的增量对整个列表进行切片,这意味着它将向后移动通过列表而不是向前移动。

答案 1 :(得分:1)

这是另一种选择,非常基本,但可以完成工作:

for i,j in enumerate(list1):
    print j, list2[-i-1]

假设两个列表的长度相同,这将按预期工作,否则,它将简单地迭代第一个列表中的元素数。