Iterar a través de pares de elementos en una lista de Python

Posibles duplicados:
Iterar una lista como par (actual, siguiente) en Python
Iterando sobre cada dos elementos en una lista

¿Es posible iterar una lista de la siguiente manera en Python (tratar este código como pseudocódigo)?

a = [5, 7, 11, 4, 5] for v, w in a: print [v, w] 

Y debe producir

 [5, 7] [7, 11] [11, 4] [4, 5] 

De las recetas de itertools :

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

Puedes usar la función zip :

 a = [5, 7, 11, 4, 5] for v, w in zip(a[:-1], a[1:]): print [v, w] 

Para ello debes hacer:

 a = [5, 7, 11, 4, 5] for i in range(len(a)-1): print [a[i], a[i+1]] 

Casi textualmente de Iterar sobre pares en una lista (circular) en 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