如何按两个元素遍历列表?

309 投票
7 回答
659956 浏览
提问于 2025-04-15 23:39

我想要遍历一个Python列表,每次处理两个列表项。就像在其他语言中这样做:

for(int i = 0; i < list.length(); i+=2)
{
   // do something with list[i] and list[i + 1]
}

有什么好的方法可以实现这个吗?

7 个回答

85

在我看来,最简单的就是这个:

it = iter([1,2,3,4,5,6])
for x, y in zip(it, it):
    print x, y

Out: 1 2
     3 4
     5 6

没有额外的导入或者其他复杂的东西。而且我觉得这非常优雅。

141

你还可以使用这种写法 (L[start:stop:step]):

mylist = [1,2,3,4,5,6,7,8,9,10]
for i in mylist[::2]:
    print i,
# prints 1 3 5 7 9

for i in mylist[1::2]:
    print i,
# prints 2 4 6 8 10

这里,第一个数字是开始的位置(默认是从列表的开头,也就是0),第二个数字是结束的位置(默认是到列表的结尾),第三个数字是步长,也就是每次跳过多少个元素。

490

你可以使用一个步长为2的 range 函数:

Python 2

for i in xrange(0,10,2):
  print(i)

Python 3

for i in range(0,10,2):
  print(i)

注意:在Python 2中使用 xrange 而不是 range,因为 xrange 更高效,它生成的是一个可迭代的对象,而不是整个列表。

撰写回答