如何将多个列表合并为一个列表?

201

我有很多列表:

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

我想将它们合并成一个列表:

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

19
这并不是那个问题的重复。那个问题是在问如何展开一个嵌套列表。这个问题更基础,只是在询问如何连接单独的列表。 - BrenBarn
3
这正是我想问的。 - user1452759
1
将单独的列表连接起来就是将一个列表中的多个列表展平。要么这些“单独的列表”已经在一个列表中,要么它们在不同的变量中,应该被收集到一个列表(或其他序列)中。 - Karl Knechtel
3个回答

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

只是另一种方法....


1
@user1452759 list(itertools.chain(['it'], ['was'], ['annoying'])) 返回 ['it', 'was', 'annnoying']。这是否符合您的要求? - lvc
...或者寻找“list.extend”,如果已经将其包装在列表中。 - ToolmakerSteve
30
如果输入是一个列表嵌套的列表,可以使用from_iterable函数,例如ab = list(itertools.chain.from_iterable([['it'], ['was'], ['annoying']])),这将给出OP所期望的答案。 - Fnord
12
你也可以使用这种方式将它作为 *args 传递:itertools.chain(*my_list_of_lists) - Oxcug
1
@BallpointBen 不行,因为from_iterable可以接受任何可迭代对象,比如可以返回连续列表的生成器。 - Michał Góral
显示剩余3条评论

186

只需将它们添加进去:

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

你应该阅读Python教程来学习这样的基础信息。


230
你已经解决了i=3的情况,那么i=n呢?请将其翻译为中文。 - William Entriken
@Full Decent,感谢您指出这一点,我没有考虑到i=n的情况。但是我认为如果是i=n的情况,可以在列表中循环并将它们连接起来。对于我来说,只需要最简单的逗号方式来连接两个列表,而不重复元素。 - zhihong
1
@zhihong 你好,虽然已经过去了一整年,但是你可以在合并列表后使用类似于 mylist = list(set(mylist)) 的语句来去除重复项。 - kittenparry
4
从技术角度讲,你可以使用内置的sum函数,例如 sum(mylist, []),但这并不是非常优化的。 - Zen3515
2
对于 i=n 的情况,您还可以使用 reduce(lambda l1, l2: l1 + l2, lists),其中 lists 是一个列表或元组的集合。 - Sayyor Y
显示剩余2条评论

64
a = ['it']
b = ['was']
c = ['annoying']

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

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

4
是的,但如果您不确定要用于扩展主列表的列表长度,则我该如何进行扩展?是否有任何方法可以使用切片方法来处理可变长度的列表? - diffracteD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接