Python:交织两个列表

Python: Intertwining two lists

做以下事情的方法是什么?

我有两张相同长度的ab清单,我想列出来

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

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

阅读有关zip的文档。

要与Ignacio的答案进行比较,请看以下问题:如何使用列表理解将元组转换为一维列表?


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


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

另一种方法是:

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

(可能不是很有效,因为您同时形成了临时元组(x,y)和临时列表[x,y]。)


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

或者,您可以尝试:

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

当然可读性较差


这个怎么样(在python 2和3上测试):

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

或麻木:

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