Skip to main content
 首页 » 编程设计

python之将几个参数传递给 map() 中的函数

2025年05月04日22cyq1162

例如,如果我想检测数组中的所有奇数并将它们设置为零,我可以使用:

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)