执行以下操作的pythonic方式是什么:
我有两个相同长度a
的{{1}}和b
列表,我想形成列表
n
答案 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()