以下在 python2 中用于调用存储在函数列表中的函数对象列表:
for f in functions:
map(f, data)
python3 的等价物是什么,因为上面似乎不起作用
以下在 python2 中用于调用存储在函数列表中的函数对象列表:
for f in functions:
map(f, data)
python3 的等价物是什么,因为上面似乎不起作用
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))
但是,如果您实际上不需要返回值,我建议您不要使用列表。构建它们并立即丢弃它们需要额外的时间和内存。
您可以使用嵌套列表推导:
[[f(d) for d in data] for f in functions]
或者只是评估地图对象,例如通过将其转换为列表:
list(map(f, data))