-2

以下在 python2 中用于调用存储在函数列表中的函数对象列表:

for f in functions:
    map(f, data)

python3 的等价物是什么,因为上面似乎不起作用

4

2 回答 2

1

map在 Python 3 中返回一个迭代器,这就是为什么当你调用它时什么都没有发生。

由于您显然不关心返回值,我认为最好使用显式循环:

for f in functions:
    for d in data:
       f(d)

如果您确实结果存储在 Python2 中:

for f in functions:
    a = map(f, data)

然后你可以把它改成

for f in functions:
    a = list(map(f, data))

但是,如果您实际上不需要返回值,我建议您不要使用列表。构建它们并立即丢弃它们需要额外的时间和内存。

于 2012-12-02T10:33:01.103 回答
-1

您可以使用嵌套列表推导:

[[f(d) for d in data] for f in functions]

或者只是评估地图对象,例如通过将其转换为列表:

list(map(f, data))
于 2012-12-02T10:35:26.543 回答