在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 ]
这显然是个坏主意,并产生了len(list1)*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。
以下是一些选项:
理解力强:(其实没必要)
你可以做
allList = list1 + list2 + list3
而不是allList = [x for x in list1 + list2 + list3]
更好的解决方案是使用^{} 而不是加法。这样,不必创建中间列表
list1 + list2
,然后创建另一个中间列表list1 + list2 + list3
,只需创建没有中间元素的最终列表:然而,这样的空列表理解非常愚蠢;只需使用
list
函数将任意iterable转换为列表:或者,更好的是…如果您需要它的唯一原因是循环遍历它,那么只需将它作为迭代器:
当我们在做的时候,"similar question" you linked to实际上是一个非常不同的、更复杂的问题。但是,因为
itertools
很酷,所以在Python中它仍然是一行代码:或者,如果要按问题指定的格式打印出来:
相关问题 更多 >
编程相关推荐