python - 如何多次打印存储在变量中的 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]
,第一次可能,第二次不可能,它让我着迷[]
。问题是什么?
解决方案
map
对象可以被认为是对某个数据序列的迭代器。简而言之,该map
对象应用您指定的功能,每次next
都应用到它。它不存储结果。
因此,使用,您可以有效地*
应用于until ,这意味着您可以有效地将函数应用于您的数据。next
a
StopIteration
inc
之后,您应该重新初始化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
。
推荐阅读
- c++ - 具有默认值的可变参数模板参数
- php - 无法使用 Twilio 批量发送 SMS(错误 52182)
- elasticsearch - 使用匹配查询以获取给定字段的所有值!弹性搜索
- amazon-web-services - AWS Elastic Beanstalk 无效的二进制包
- laravel - 目前我将 json 数据保存在字符串类型的列中,制作 json 类型有什么好处吗?
- r - 如何匹配除数字后跟空格和仅数字后跟空格之外的所有内容?
- php - 如何在我的名为 ajax 的 php 脚本中访问 wordpress 函数
- excel - 如何遍历工作表的多个区域?
- powershell-2.0 - powershell v2 可能的重定向问题
- excel - 获取不属于给定开始和结束日期的周动态列表