迭代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): ... 

您可以使用zipfunction:

 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