我定义了一个factorial函数,如下所示:
def fact(n):
return 1 if n < 2 else n * fact(n-1)现在,我正在运行map函数,如下所示:
results = map(fact, range(1,5))
for x in results:
print(x)
Output:
1
2
6
24我完全理解上面的输出。但是,如果我再次运行相同的for循环,我将得到一个我无法理解的空白输出。
for x in results:
print(x)
Output:发布于 2021-12-15 23:10:18
这是因为在python3中,map函数返回一个迭代器。当你遍历生成器时,它就会变得疲惫和空,所以试图再次遍历它就像遍历空列表一样。
print(results) # <map object at 0x10a392310>如果您想遍历它不止一次,您可以将它转换为列表。
results = list(map(fact, range(1,5)))发布于 2021-12-15 23:11:36
results是一个map对象,是一个生成器。元素是在遍历map时生成的,并且当您开始新的迭代时它不会重置。
如果希望它表现为列表,可以显式地将map转换为如下所示的list:
results = list(map(fact, range(1,5)))或者使用列表理解代替map
results = [fact(n) for n in range(1, 5)]https://stackoverflow.com/questions/70371396
复制相似问题