【发布时间】:2011-09-15 09:50:17
【问题描述】:
执行以下操作的pythonic方式是什么:
我有两个列表a 和b,长度相同n,我想组成列表
c = [a[0], b[0], a[1], b[1], ..., a[n-1], b[n-1]]
【问题讨论】:
执行以下操作的pythonic方式是什么:
我有两个列表a 和b,长度相同n,我想组成列表
c = [a[0], b[0], a[1], b[1], ..., a[n-1], b[n-1]]
【问题讨论】:
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?
【讨论】:
c = list(itertools.chain.from_iterable(itertools.izip(a, b)))
【讨论】:
c = [item for t in zip(a,b) for item in t]
【讨论】:
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)]
当然可读性较差
【讨论】:
这是另一种方式:
sum(([x,y] for (x,y) in zip(a,b)), [])
(可能效率不高,因为您同时形成了临时元组 (x,y) 和临时列表 [x,y]。)
【讨论】:
这个怎么样(在 Python 2 和 3 上测试):
list(sum(zip(a, b), ()))
或在 numpy 中:
import numpy as np
np.vstack((a, b)).T.flatten().tolist()
【讨论】: