首页 > 解决方案 > 我需要帮助了解 python 中的 map 函数

问题描述

def multiply(x):
    return (x*x)
def add(x):
    return (x+x)

funcs = [multiply, add]
for i in range(5):
    value = list(map(lambda x: x(i), funcs))
    print(value)

所以我知道 map 用于将函数/第一个 arg 应用于列表/第二个 arg 中的每个项目。我不明白它是如何在这个函数列表中处理的。

输出:

[0, 0]

[1, 2]

[4, 4]

[9, 6]

[16, 8]

标签: pythondictionary

解决方案


让我们试着把它从循环中拉出来,看看会发生什么。

lambda x: x(i)正在使用参数调用每个函数,i并且 map (大致)将其转换为列表。

list(map(lambda x: x(0), funcs)) -> [0,0]

这和说的一样:[multiply(0), add(0)]

如果我们用 1 再试一次:

list(map(lambda x: x(0), funcs)) -> [1,2]

这和说的一样:[multiply(1), add(1)]

您正在应用的函数,即 map 的第一个参数,是您的 lambda。这恰好是一个返回其输入结果的高阶函数。

重写此程序的类似方法是:

def multiply_and_add(i):
    return [multiply(i), add(i)]

result = map(multiply_and_add, range(5))

for value in result
    print(value)

推荐阅读