迭代Python列表中的项目对
可能重复:
在Python中迭代列表(current,next)
迭代列表中的每两个元素
是否有可能在Python中以下列方式迭代列表(将此代码视为伪代码)?
a = [5, 7, 11, 4, 5] for v, w in a: print [v, w]
它应该产生
[5, 7] [7, 11] [11, 4] [4, 5]
来自itertools receipes:
from itertools import tee, izip def pairwise(iterable): "s -> (s0,s1), (s1,s2), (s2, s3), ..." a, b = tee(iterable) next(b, None) return izip(a, b) for v, w in pairwise(a): ...
您可以使用zip
function:
a = [5, 7, 11, 4, 5] for v, w in zip(a[:-1], a[1:]): print [v, w]
这不可能。 你应该先尝试一下。
要做到这一点,你应该这样做:
a = [5, 7, 11, 4, 5] for i in range(len(a)-1): print [a[i], a[i+1]]
几乎逐字从Python中的列表(循环方式)中的迭代对 :
def pairs(seq): i = iter(seq) prev = next(i) for item in i: yield prev, item prev = item
>>> a = [5, 7, 11, 4, 5] >>> for n,k in enumerate(a[:-1]): ... print a[n],a[n+1] ... 5 7 7 11 11 4 4 5