给出清单
l = [1, 7, 3, 5]
我想遍历所有成对的连续列表项(1,7), (7,3), (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模块应该有解决方案,但我无法弄清楚。
itertools
只需使用拉链
>>> l = [1, 7, 3, 5] >>> for first, second in zip(l, l[1:]): ... print first, second ... 1 7 7 3 3 5
如建议的那样,你可能会考虑izip在itertools很长的列表中使用此函数,而这些列表又不想创建新列表。
izip
import itertools for first, second in itertools.izip(l, l[1:]): ...