如何按两个元素遍历列表?
我想要遍历一个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
更高效,它生成的是一个可迭代的对象,而不是整个列表。