如何将列表列表与列表配对?

时间:2017-05-25 07:42:35

标签: python list tuples

我有两个清单:

xy = [[1,2],[3,4],[5,6]]
z = [1,3,5]

我想将它们合并到:

xyz = [[1,2,1],[3,4,3],[5,6,5]]

xyz = [(1,2,1),(3,4,3),(5,6,5)]

以下是我如何做到这一点:

for i,lst in enumerate(xy):
    lst.append(z[i])
xy

有没有更简洁的方法可以在不使用for循环的情况下执行此操作?

4 个答案:

答案 0 :(得分:5)

如果您使用的是Python 3.5+,则可以使用PEP 448

xyz = [(*a, b) for a, b in zip(xy, z)]

这也使用list comprehensionzip()使其成为一个简单的单行。

如果您根本不想使用for循环,实际上有一种使用函数式编程和map()的方法,但这可能不是最好的方法(Python不赞成函数式编程):

xyz = map(lambda a, b: a + [b], xy, z)

答案 1 :(得分:3)

这可能是一种更简洁的方式:

Ret = [a + [b] for a, b in zip(xy, z)]

答案 2 :(得分:0)

使用enumerate函数简短列表理解

result = [l+[z[k]] for k,l in enumerate(xy)]
print(result)

输出:

[[1, 2, 1], [3, 4, 3], [5, 6, 5]]

答案 3 :(得分:0)

我建议列表理解为可读性:

[a + [b] for a, b in zip(xy, z)]