如何将列表与列表列表合并

How to merge a list with a list of lists

如何在 Python 中合并两个列表(一个列表的列表)?

输入:

A = [[1,2,3],[3,4,5],[6,7,8],[9,10,11]]

B = [0,1,1,1]

期望的输出:

C = [[[1,2,3],[0]],[[1,2,3],[1]],[[1,2,3],[1]],[[1,2,3],[1]]]

我试过了:

zip

更优雅的方式

A=[[1,2,3],[3,4,5],[6,7,8],[9,10,11]]

B=[0,1,1,1]

map(lambda e: [A[0],[e]], B)

输出::

[[[1, 2, 3], [0]], [[1, 2, 3], [1]], [[1, 2, 3], [1]], [[1, 2, 3], [1]]]

根据您的预期输出,您正在尝试将列表 A 中的第一个内部列表与列表 B 中的每个项目组合起来。
使用以下简单方法(列表理解):

C = [[A[0], [i]] for i in B]

print(C)

输出:

[[[1, 2, 3], [0]], [[1, 2, 3], [1]], [[1, 2, 3], [1]], [[1, 2, 3], [1]]]

您已经有了使用列表理解实现此目的的答案。如果您以正确的方式使用它,您也可以使用 zip() 实现它:

  • 使用 map(zip()) 组合为:

    >>> list(map(lambda x: [A[0], [x]], B))
    [[[1, 2, 3], [0]], [[1, 2, 3], [1]], [[1, 2, 3], [1]], [[1, 2, 3], [1]]]
    
  • 使用 zip(map()) 组合为:

    >>> zip([A[0]]*4, map(lambda x: [x], B))
    [([1, 2, 3], [0]), ([1, 2, 3], [1]), ([1, 2, 3], [1]), ([1, 2, 3], [1])]
    

    解释: 这里 map() 会将您的列表 B 转换为:

    >>> map(lambda x: [x], B)
    [[0], [1], [1], [1]]
    

    [A[0]]*4 将使用 A[0] 的副本创建新列表,如:

    >>> [A[0]]*4
    [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
    

    现在您只需要 zip() 两个列表。

`