如何将列表与列表列表合并
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()
两个列表。
`
如何在 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()
两个列表。
`