我有三个清单:
list_01 = ['DOG','CAT','BEAR']
list_02 = ['V','W','X','Y','Z']
list_03 = ['A','B','C','D','E','F','G','H']
我希望得到的是如下列表:
list_04 = ['DOG','V','A','CAT','W','B','BEAR','X','C','Y','D','Z','E','F','G','H']
其中从list01到03中选择一个元素,当元素耗尽时忽略list_01,以此类推。
任何意见将是有益的。谢谢。
似乎您想按顺序执行此操作,而不是随机执行。如果是这样,您可以使用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']
注意:当一个列表用完时zip_longest会产生None值。这就是我们None在理解中过滤的原因。
您可以使用zip_longest和chain从itertools模块:
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]
输出:
['DOG', 'V', 'A', 'CAT', 'W', 'B', 'BEAR', 'X', 'C', 'Y', 'D', 'Z', 'E', 'F', 'G', 'H']