ChatGPT解决这个技术问题 Extra ChatGPT

如何在python中将多个列表合并为一个列表? [复制]

这个问题在这里已经有了答案:9 年前关闭。社区在 11 个月前审查了是否重新打开此问题并将其关闭:重复此问题已得到回答,不是唯一的,并且与其他问题没有区别。

可能重复:从 Python 中的列表列表中制作一个平面列表 将列表列表一起加入 Python 中的一个列表

我有很多看起来像的列表

['it']
['was']
['annoying']

我希望上面看起来像

['it', 'was', 'annoying']

我该如何做到这一点?

这并不是真正的复制品。该问题是询问如何展平嵌套列表的列表。这个问题更为基本,只是询问如何连接各个列表。
@BrenBarn 这正是我要问的。

R
Rakesh
import itertools
ab = itertools.chain(['it'], ['was'], ['annoying'])
list(ab)

只是另一种方法......


好的,有一个文件中有不同的单词。我已经完成了 s = [word] 将文件的每个单词放入列表中。但正如我上面提到的,它会创建单独的列表(print s 返回 ['it]']['was']['annoying'])。我想将所有这些合并到一个列表中。
@user1452759 list(itertools.chain(['it'], ['was'], ['annoying'])) 给出 ['it', 'was', 'annnoying']。这和你想要的不一样吗?
如果输入是列表列表,则使用 ab = list(itertools.chain.from_iterable([['it'], ['was'], ['annoying']]))from_iterable 函数将给出 OP 期望的答案
您也可以通过说:itertools.chain(*my_list_of_lists) 将其作为 *args 传递。
@BallpointBen 不,因为 from_iterable 它接受任何可迭代对象,例如生成器返回后续列表。
B
BrenBarn

只需添加它们:

['it'] + ['was'] + ['annoying']

您应该阅读 the Python tutorial 以了解此类基本信息。


你解决了 i=3 的情况,那 i=n 呢?
@Full Decent,感谢您指出这一点,没有考虑 i=n 的情况。但我认为如果是 i=n 情况,可以在列表中循环并将它们连接起来。对我来说,只需要最逗号的方式来加入 2 个没有重复元素的列表。
@zhihong 嘿,已经过去了整整一年,但您可以在合并列表后使用 mylist = list(set(mylist)) 之类的东西来消除重复项。
@WilliamEntriken,从技术上讲,您可以使用 build in sum 例如 sum(mylist, []) 但它不是很优化。
对于 i=n 的情况,您还可以使用 reduce(lambda l1, l2: l1+l2, lists),其中 lists 是列表或列表的元组。
S
Scotty
a = ['it']
b = ['was']
c = ['annoying']

a.extend(b)
a.extend(c)

# a now equals ['it', 'was', 'annoying']

是的,但是如果您不确定列表的长度(用于扩展主列表),那么我将如何扩展?无论如何可以使用切片方法来处理可变长度列表吗?