Python:交织两个列表

时间:2011-06-15 10:05:03

标签: python list-comprehension

执行以下操作的pythonic方式是什么:

我有两个相同长度a的{​​{1}}和b列表,我想形成列表

n

6 个答案:

答案 0 :(得分:21)

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

阅读有关zip的文档。


为了与Ignacio的回答进行比较,请参阅此问题:How do I convert a tuple of tuples to a one-dimensional list using list comprehension?

答案 1 :(得分:10)

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

答案 2 :(得分:7)

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

答案 3 :(得分:1)

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

或者你可以尝试:

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

当然不太可读

答案 4 :(得分:1)

这是另一种方式:

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

(因为你形成了临时元组(x,y)和临时列表[x,y],所以可能效率不高。)

答案 5 :(得分:0)

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

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

或在numpy:

.html()