【发布时间】:2018-09-25 03:54:33
【问题描述】:
我对 python 中的map 有点困惑。 map的函数接受2个参数:`map(function, variables)。
为什么下面的代码可以将multiply 和add 作为变量,而第二个代码不能?通常情况下,multiply 应该作为函数传入,检查范围。
def multiply(x):
return x * x
def add(x):
return x + x
funcs = [multiply, add]
for i in range (1, 5):
value = list(map(lambda x: x(i), funcs))
print(value)
这是第二个代码:
def multiply(x):
return x * x
def add(x):
return x + x
funcs = (add, multiply)
multi_func = (multiply)
for i in range (1, 5):
value = list(map(lambda x: x(i), multi_func))
print(value)
是否可以使用 1 个函数并仍然在范围内使用?
使用范围:
map(multiply, range(1, 5))
【问题讨论】:
-
试试
multi_func = (multiply,) -
有效!但是为什么它不在地图参数的左侧,因为它是一个函数?
-
我认为是因为它作为一个元组接受?但我仍然对它如何能够交换位置感到震惊。 (当我查看使用范围方法时)
-
map 接受一个可调用和可迭代的参数。你给它的可调用对象
lambda x: x(i)只是调用它的参数,而你试图给它的可迭代对象是可调用对象的可迭代对象(即函数)
标签: python python-3.x higher-order-functions map-function