【问题标题】:How to merge multiple lists into one list in python? [duplicate]如何在python中将多个列表合并为一个列表? [复制]
【发布时间】:2012-07-19 10:13:22
【问题描述】:

可能重复:
Making a flat list out of list of lists in Python
Join a list of lists together into one list in Python

我有很多看起来像

的列表
['it']
['was']
['annoying']

我希望上面看起来像

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

我如何做到这一点?

【问题讨论】:

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

标签: python list join merge


【解决方案1】:

只需添加它们:

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

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

【讨论】:

  • 你解决了 i=3 的情况,那 i=n 呢?
  • @Full Decent,感谢您指出这一点,没有考虑 i=n 的情况。但我认为如果是 i=n 情况,可以在列表中循环并将它们连接起来。对我来说,只需要最逗号的方式来加入 2 个没有重复元素的列表。
  • @zhihong 嘿嘿,一整年过去了,但你可以在合并列表后使用mylist = list(set(mylist)) 之类的东西来消除重复项。
  • 我能够使用“可能重复”列表中的“展平列表列表”方法解决 i = n 的问题
  • @WilliamEntriken ,从技术上讲,您可以使用内置总和例如sum(mylist, []),但它不是很优化。
【解决方案2】:
a = ['it']
b = ['was']
c = ['annoying']

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

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

【讨论】:

  • 是的,但是如果您不确定列表的长度(用于扩展主列表),那么我将如何扩展?无论如何都可以使用切片方法来处理可变长度列表吗?
【解决方案3】:
import itertools
ab = itertools.chain(['it'], ['was'], ['annoying'])
list(ab)

只是另一种方法....

【讨论】:

  • 好的,有一个文件在 'em 中有不同的单词。我已经完成 s = [word] 将文件的每个单词放入列表中。但正如我上面提到的,它会创建单独的列表(print s 返回 ['it]']['was']['annoying'])。我想将它们全部合并到一个列表中。
  • @user1452759 list(itertools.chain(['it'], ['was'], ['annoying'])) 给出['it', 'was', 'annnoying']。这和你想要的不一样吗?
  • 如果输入是列表列表,则使用 from_iterable 函数(例如 ab = list(itertools.chain.from_iterable([['it'], ['was'], ['annoying']])))将给出 OP 期望的答案
  • 您也可以将其作为*args 传递,方法是:itertools.chain(*my_list_of_lists)
  • @BallpointBen 不,因为from_iterable 它接受任何可迭代对象,例如可以是生成器返回后续列表。
猜你喜欢
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
  • 2020-07-19
  • 2015-09-17
  • 2014-05-16
  • 1970-01-01
  • 2014-03-08
相关资源
最近更新 更多