例如,如果我想检测数组中的所有奇数并将它们设置为零,我可以使用:
def setToZeroIfOdd(n):
if n % 2 == 0:
pass
else:
return 0
numbers = range(1,1000)
numbers = map(setToZeroIfOdd, numbers)
这就像一个魅力。
但是当我尝试类似的东西时
def setToZeroIfDivisibleBy(n, divisor):
if n % divisor == 0:
return 0
else:
pass
numbers = map(setToZeroIfDivisibleBy(divisor=3), numbers)
它需要两个参数。同样,
numbers = map(setToZeroIfDivisibleBy, numbers, divisor=3)
不起作用。如何从 map() 中传递 divisor 参数?
请您参考如下方法:
您可以使用 functools.partial实现部分功能
from functools import partial
def setToZeroIfDivisibleBy(n, divisor):
if n % divisor == 0:
return 0
else:
pass
numbers = range(1,1000)
numbers = map(partial(setToZeroIfDivisibleBy, divisor=3), numbers)
