是什么做的Python的方式如下:的Python:缠结两个列表
我有两个列表a
和相同的长度n
的b
,我想形成列表
c = [a[0], b[0], a[1], b[1], ..., a[n-1], b[n-1]]
是什么做的Python的方式如下:的Python:缠结两个列表
我有两个列表a
和相同的长度n
的b
,我想形成列表
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的文档。
对于伊格纳西奥的回答比较看这个问题:How do I convert a tuple of tuples to a one-dimensional list using list comprehension?
c = [item for t in zip(a,b) for item in t]
c = list(itertools.chain.from_iterable(itertools.izip(a, b)))
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()