我遇到了某些内置函数,例如zip
和map
。
我尝试打印这些功能,它们的结果是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))
都只会导致空列表。
zip
、map
和range
都不是像列表、字符串、集合或字典这样的集合,因为它们是懒惰地计算的。这意味着,它们不会显式包含所有值,而只会在被要求这样做时才生成下一个值(例如,在循环中或在列表中解压缩时(。
因此,列表和映射是可迭代的,因为您可以迭代它们,但映射是生成器,而列表是容器。
您可以将生成器解压缩到包含list(map(...))
的列表(也可以使用集合或元组等(,或使用星号 (*
( 将它们解压缩到函数的各个参数 (print(*map(...))
(。