【问题标题】:python, list and generator concatenationpython,列表和生成器连接
【发布时间】:2020-07-18 11:49:38
【问题描述】:

我想加入一个列表、一个生成器和一个列表。例如在第 1 步,我有一个空列表

A = []

和生成器 B,它给了我列表 L 的组合:

B = combinations(list(L[0]), 2), 

例如给我B=[(1,2), (1,3), (1,4)]

我想要一个列表A = [(1,2), (1,3), (1,4)]

第 2 步:

A = [(1,2), (1,3), (1,4)]
B = combinations(list(L[1]), 2)= [(2,4),(4,5)]

我现在希望我的 A 是:

A = A + B = [ (1,2), (1,3), (1,4), (2,4),(4,5) ]

这怎么可能?

【问题讨论】:

  • 你试过A + list(B)吗?
  • L[0] 已经是一个可迭代对象,如果您可以将其作为参数传递给list,这意味着您也可以将其直接传递给combinationsB = combinations(L[0], 2)
  • 如果您尝试过A = A + B,您就会知道这是您要查找的输出。
  • A.extend(combinations(list(L[0]),2))

标签: python list generator


【解决方案1】:

使用itertools.chain

from itertools import chain


A = list(chain(A, B))

如果你想原地修改A,只需使用extend(其参数可以是任何可迭代值):

A.extend(B)

【讨论】:

  • 这似乎行得通。但是如何检查 C = [12, 15] 是否在 A=list(chain(A, B))= [(12,14), (12,15)] 中?因为条件(如果 C 在 A 中)似乎不起作用。
  • 因为不是。 C 是一个列表,A元组 的列表,而不是列表的列表。试试tuple(C) in A
【解决方案2】:

你可以使用 Python extend() method:

A = [(1,2), (1,3), (1,4)]
B = [(2,4),(4,5)]

A.extend(B)

现在 A 的值为 [ (1,2), (1,3), (1,4), (2,4), (4,5) ]

这似乎也可以正常工作:

A = [(1,2), (1,3), (1,4)]
B = [(2,4),(4,5)]

A = A + B

【讨论】:

    猜你喜欢
    • 2018-03-26
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多