我有两个清单:
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循环的情况下执行此操作?
答案 0 :(得分:5)
如果您使用的是Python 3.5+,则可以使用PEP 448:
xyz = [(*a, b) for a, b in zip(xy, z)]
这也使用list comprehension和zip()
使其成为一个简单的单行。
如果您根本不想使用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)]