一尘不染

Python-遍历列表中的所有成对连续项

python

给出清单

l = [1, 7, 3, 5]

我想遍历所有成对的连续列表项(1,7), (7,3), (3,5),即

for i in xrange(len(l) - 1):
    x = l[i]
    y = l[i + 1]
    # do something

我想以更紧凑的方式做到这一点,例如

for x, y in someiterator(l): ...

有没有办法使用内置的Python迭代器来做到这一点?我确定该itertools模块应该有解决方案,但我无法弄清楚。


阅读 546

收藏
2020-02-20

共1个答案

一尘不染

只需使用拉链

>>> l = [1, 7, 3, 5]
>>> for first, second in zip(l, l[1:]):
...     print first, second
...
1 7
7 3
3 5

如建议的那样,你可能会考虑izipitertools很长的列表中使用此函数,而这些列表又不想创建新列表。

import itertools

for first, second in itertools.izip(l, l[1:]):
    ...
2020-02-20