Python:缠绕两个列表

| 执行以下操作的pythonic方法是什么: 我有两个长度分别为
n
的列表length0ѭ和
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的文档。 为了与Ignacio的答案进行比较,请参见以下问题:如何使用列表理解将元组的元组转换为一维列表?     
        
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()
    

要回复问题请先登录注册