为什么您无法打印某些迭代器,如zip或map?

  • 本文关键字:迭代器 zip map 打印 python
  • 更新时间 :
  • 英文 :


我遇到了某些内置函数,例如zipmap

我尝试打印这些功能,它们的结果是zip object at 0x1007a06c8<map object at 0x003AB2E0>.

我知道这些函数返回迭代器,但我也可以使用 for 循环作为迭代器运行字符串/列表/字典。因此,zip 和地图有何不同,我如何能够显示它们?我还应该注意哪些其他例子?

执行以下操作:

list(zip(a,b))

解释:

Python 3中的zip()函数返回一个迭代器。

这样做的目的是通过仅在需要时生成迭代器的元素来节省内存,而不是一次将其全部放入内存中。

您可以通过执行list(zip(a,b))来耗尽它一次。因此,在那之后,无论何时您这样做list(zip(a,b))都只会导致空列表。

zipmaprange都不是像列表、字符串、集合或字典这样的集合,因为它们是懒惰地计算的。这意味着,它们不会显式包含所有值,而只会在被要求这样做时才生成下一个值(例如,在循环中或在列表中解压缩时(。

因此,列表和映射是可迭代的,因为您可以迭代它们,但映射是生成器,而列表是容器。

您可以将生成器解压缩到包含list(map(...))的列表(也可以使用集合或元组等(,或使用星号 (*( 将它们解压缩到函数的各个参数 (print(*map(...))(。

最新更新