从多个列表中创建一个列表

Man*_*ngo 5 python list

我有三个清单:

list_01 = ['DOG','CAT','BEAR']
list_02 = ['V','W','X','Y','Z']
list_03 = ['A','B','C','D','E','F','G','H']
Run Code Online (Sandbox Code Playgroud)

我希望得到的是如下列表:

list_04 = ['DOG','V','A','CAT','W','B','BEAR','X','C','Y','D','Z','E','F','G','H']
Run Code Online (Sandbox Code Playgroud)

其中从list01到03中选择一个元素,当元素耗尽时忽略list_01,以此类推。

任何意见将是有益的。谢谢。

Mar*_*yer 5

似乎您想按顺序执行此操作,而不是随机执行。如果是这样,您可以使用zip_longest()from itertools 并进行嵌套列表理解:

from itertools import zip_longest

list_01 = ['DOG','CAT','BEAR']
list_02 = ['V','W','X','Y','Z']
list_03 = ['A','B','C','D','E','F','G','H']


list_04 = [n for group in zip_longest(list_01, list_02, list_03) 
           for n in group if n is not None]

# ['DOG', 'V', 'A', 'CAT', 'W', 'B', 'BEAR', 'X', 'C', 'Y', 'D', 'Z', 'E', 'F', 'G', 'H']
Run Code Online (Sandbox Code Playgroud)

注意:当一个列表用完时zip_longest会产生None值。这就是我们None在理解中过滤的原因。


moz*_*way 5

您可以使用zip_longestchainitertools模块:

from itertools import chain, zip_longest
list_04 = [i for i in chain(*zip_longest(list_01, list_02, list_03))
           if i is not None]
Run Code Online (Sandbox Code Playgroud)

输出:

['DOG', 'V', 'A', 'CAT', 'W', 'B', 'BEAR', 'X', 'C', 'Y', 'D', 'Z', 'E', 'F', 'G', 'H']
Run Code Online (Sandbox Code Playgroud)