4

我明白,有一个列表参数map()可以被列表理解所取代。例如列表理解相当于两个列表上的地图并行

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

可以

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

现在,我会怎么做了两个平行的列表类似的东西来代替。换句话说,我有以下模式的代码行:

map(func, xs, ys) 

其中func()有两个参数。

我该如何用列表理解来做同样的事情?

回答

8

map()具有多个参数相当于在这些额外参数上使用zip() function。使用zip()列表中的理解做同样的:

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

一般来说,任何map(func, a1, a2, .., an)表达式可以转化为一个列表的理解与[func(*args) for args in zip(a1, a2, .., an)]

+0

这个答案不如旧的,流行的,规范的副本彻底。 – TigerhawkT3

+0

@ TigerhawkT3:我不知道存在。现在正在判断这个答案是否与另一个问题相比较? –

+0

你不认为已经有一个关于'zip'的问题吗? – TigerhawkT3