小编kie*_*rrr的帖子

在 Python 3 中使用多个函数 map()

我不确定为什么下面的代码有效。根据文档,map 仅采用一个函数作为第一个参数,并将其应用于一个或多个可迭代对象,具体取决于函数采用的参数数量。

map(function, iterable..)

但是,您可以传递多个函数来代替可迭代对象,并且以某种方式将它们视为可迭代对象。不知何故,这一行将函数 add、square 和 str 视为可迭代对象。

函数如何被视为有效的可迭代对象?

def add(x):
    return x + x


def square(x):
    return x * x


nums = [1, 2, 3, 4, 5]

for i in nums:
    vals = list(map(lambda x: x(i), (add, square, str)))

    print(vals)
Run Code Online (Sandbox Code Playgroud)

返回:

[2, 1, '1']
[4, 4, '2']
[6, 9, '3']
[8, 16, '4']
[10, 25, '5']
Run Code Online (Sandbox Code Playgroud)

*编辑马丁回答了问题。此代码执行相同的操作,但将其从 lambda 函数中分离出来,显示add, square, str函数是如何迭代的。

[2, 1, '1']
[4, 4, '2']
[6, 9, '3']
[8, 16, '4']
[10, 25, '5'] …
Run Code Online (Sandbox Code Playgroud)

python functional-programming python-3.x map-function

2
推荐指数
1
解决办法
3827
查看次数