Ank*_*nki 4 python functional-programming map
映射不调用正在传递的函数.
class a:
def getDateTimeStat(self,datetimeObj):
print("Hello")
if __name__ == "__main__":
obj = a()
print("prog started")
data = [1,2,3,4,5]
b = list(map(obj.getDateTimeStat,data))
Run Code Online (Sandbox Code Playgroud)
在新行上预期的操作:Hello Hello Hello Hello Hello
任何帮助将不胜感激....
pan*_*ear 21
在Python 3中,地图值被懒惰地评估.也就是说,每个值仅在需要时计算.你会发现无论你使用什么函数,它都不会被调用,直到你在映射结果中询问该项的值,无论是使用next()还是其他方式.
为了得到你想要的,你可以这样做:
>>> b = map(obj.getDateTimeStat,data)
>>> next(b)
Hello
>>> next(b)
Hello
>>> next(b)
Hello
>>> next(b)
Hello
>>> next(b)
Hello
>>> next(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Run Code Online (Sandbox Code Playgroud)
或这个:
>>> b = list(map(obj.getDateTimeStat,data))
Hello
Hello
Hello
Hello
Hello
Run Code Online (Sandbox Code Playgroud)
或者其他各种各样的事情.
Python 3中的map功能是懒惰的,不像Python 2分的map。
你必须以某种方式消费它:
for result in map(...):
pass
Run Code Online (Sandbox Code Playgroud)
Python3中地图的非懒惰评估版本?重点介绍了一些更优雅的解决方案。