name matplot python list-comprehension

matplot - Python: entrelazando dos listas



title matplot (6)

¿Cuál es la forma pitónica de hacer lo siguiente:

Tengo dos listas a y b de la misma longitud n , y quiero formar la lista

c = [a[0], b[0], a[1], b[1], ..., a[n-1], b[n-1]]


¿Qué tal este (probado en Python 2 y 3):

list(sum(zip(a, b), ()))

o en numpy:

import numpy as np np.vstack((a, b)).T.flatten().tolist()


Aquí hay otra manera:

sum(([x,y] for (x,y) in zip(a,b)), [])

(Tal vez no sea muy eficiente ya que forman tuplas temporales (x, y) y listas temporales [x, y].)


c = [item for i in zip(a,b) for item in i]

Alternativamente puedes probar:

c=[(a,b)[i%2][i/2] for i in xrange(2*n)]

que por supuesto es menos legible



c = [item for t in zip(a,b) for item in t]


c = list(itertools.chain.from_iterable(itertools.izip(a, b)))