直接从列表理解中获取列表(无嵌套列表)

时间:2019-01-06 14:36:28

标签: python list list-comprehension

我想直接从列表理解中返回一个包含两个列表的交错元素的列表-无需使用下一步来使结果变平。有可能吗?

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]中获得信息?

3 个答案:

答案 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]