首页 > 解决方案 > 如何多次打印存储在变量中的 map() 对象结果?

问题描述

最近我正在尝试一些方法来打印map()结果,我遇到了*

我试过这个:

>>> def inc(x):
...     return x+1
...
>>> a = map(inc,[1,2,3,4,5])
>>> print(*a)
2 3 4 5 6
>>> print(*a)

在这里,我使用一个函数inc()将地图对象结果存储在a. 在使用 打印时print(*a),我得到了所需的输出。第二次运行该命令不会打印任何内容。为什么?

我想知道发生了什么事,a并尝试检查type()a

>>> type(a)
<class 'map'>

但似乎一切都很好。那么为什么我不能再次使用print(*a)命令打印结果呢?即使我尝试使用 打印[i for i in a],第一次可能,第二次不可能,它让我着迷[]。问题是什么?

标签: python

解决方案


map对象可以被认为是对某个数据序列的迭代器。简而言之,该map对象应用您指定的功能,每次next都应用到它。它不存储结果。

因此,使用,您可以有效地*应用于until ,这意味着您可以有效地将函数应用于您的数据。nextaStopIterationinc

之后,您应该重新初始化map. 或者,您可以使用tee.

https://docs.python.org/3/library/itertools.html#itertools.tee

如果要将 的结果存储map在容器中,则可以list从 的结果初始化 a map,例如

l = list(map(inc, [1, 2, 3, 4]))

这相当于调用*a,但结果被传递给list构造函数,然后分配给变量l


推荐阅读