python – 如何使用列表推导连接3个列表?

python中,如何使用列表推导来连接3个列表?

有:

    list1 = [1,2,3,4]
    list2 = [5,6,7,8]
    list3 = [9,10,11,12]

想:

    allList = [1,2,3,4,5,6,7,8,9,10,11,12]

我尝试使用列表理解,但我还不是很擅长.这些是我尝试过的:

    allList = [n for n in list1 for n in list2 for n in list3 ]

这是一个坏主意,显然并且产生了值(len1)* len(list2)* len(list3)值.哎呀.所以我尝试了这个:

    allList = [n for n in list1, list2, list3]

但这给了我allList = [list1,list 2,list3](3个列表清单)

我知道你可以使用运算符连接(如x = list1 list2 list3),但是你如何使用简单的列表理解呢?

这里有一个类似的问题:Concatenate 3 lists of words,但那是C#.

最佳答案
更好的解决方案是使用itertools.chain而不是添加.这样,您只需创建没有中间名的最终列表,而不是创建中间列表list1 list2,然后创建另一个中间列表list1 list2 list3:

allList = [x for x in itertools.chain(list1, list2, list3)]

但是,像这样的空列表理解非常愚蠢;只需使用list函数将任意迭代变为列表:

allList = list(itertools.chain(list1, list2, list3))

或者,甚至更好……如果您需要这个的唯一原因是循环它,只需将其保留为迭代器:

for thing in itertools.chain(list1, list2, list3):
    do_stuff(thing)

虽然我们正在努力,但“similar question” you linked to实际上是一个非常不同,更复杂的问题.但是,因为itertools非常酷,所以它仍然是Python中的单行程序:

itertools.product(list1, list2, list3)

或者,如果您想以该问题指定的格式打印出来:

print('\n'.join(map(' '.join, itertools.product(list1, list2, list3))))

转载注明原文:python – 如何使用列表推导连接3个列表? - 代码日志