关于python:列表理解相当于并行两个列表上的map

List comprehension equivalent to map on two lists in parallel

本问题已经有最佳答案,请猛点这里访问。

我理解,用一个列表参数,map()可以被列表理解所取代。例如

1
map(lambda x : x**2, range(5))

可替换为

1
[x**2 for x in range(5)]

现在,我如何对两个并行列表执行类似的操作。换句话说,我有一行代码具有以下模式:

1
map(func, xs, ys)

其中func()有两个论点。

我怎样才能用清单理解来做同样的事情呢?


带多个参数的map()相当于在这些额外参数上使用zip()函数。在清单理解中使用zip()来做同样的事情:

1
[func(x, y) for x, y in zip(xs, ys)]

一般来说,任何map(func, a1, a2, .., an)表达都可以通过[func(*args) for args in zip(a1, a2, .., an)]转换成列表理解。