我想直接从列表理解中返回一个包含两个列表的交错元素的列表-无需使用下一步来使结果变平。有可能吗?
alist1_temp=[1, 4,2]
alist2_temp=[3, 7,4]
t=[[x,y] for x,y in zip(alist1_temp, alist2_temp)]
返回[[1, 3], [4, 7],[2, 4]]
但是如何直接从列表理解[1, 3, 4, 7, 2, 4]
中获得信息?
答案 0 :(得分:5)
只需zip
尝试一下,即可按照您想要的顺序获得它:
[i for j in zip(alist1_temp, alist2_temp) for i in j]
如果您不介意订购,请执行以下操作:
alist1_temp + alist2_temp
或通过itertools.chain
来感谢@buran:
import itertools
list(itertools.chain(alist1_temp, alist2_temp))
答案 1 :(得分:1)
如果您喜欢使用numpy的方法,则可以使用此方法!
Foo
或者您也可以简化列表的理解
np.vstack((alist1_temp,alist2_temp)).flatten('F')
答案 2 :(得分:1)
您指定要从列表理解中获取它:
alist1_temp=[1,4,2]
alist2_temp=[3,7,4]
L = len(alist1_temp)+len(alist2_temp)
t = [alist2_temp[i//2] if i%2 else alist1_temp[i//2] for i in range(L)]
print(t) #prints [1, 3, 4, 7, 2, 4]