我遇到了问题map
功能。当我想打印创建的列表时,解释器显示指针:
>>> squares = map(lambda x: x**2, range(10))
>>> print(squares)
<map object at 0x0000000002A086A0>
问题是什么?
问题是没有创建列表。map https://docs.python.org/3/library/functions.html#map返回特定类型iterator https://docs.python.org/3/glossary.html#term-iterator在 Python 3 中,这不是一个列表(而是一个“映射对象”,如您所见)。你可以试试
print(list(squares))
或者首先使用列表理解来获取列表(无论如何,这似乎在这里效果更好):
squares = [x**2 for x in range(10)]
map
用于在 Python 2.x 中返回列表,Python 3 中所做的更改描述于this https://docs.python.org/3/whatsnew/3.0.html#views-and-iterators-instead-of-lists文档部分:
-
map()
and filter()
返回迭代器。如果您确实需要一个列表,可以快速解决,例如list(map(...))
,但更好的解决方法通常是使用列表理解(特别是当原始代码使用lambda
),或者重写代码,使其根本不需要列表。特别棘手的是map()
因函数的副作用而调用;正确的转换是使用常规的for
循环(因为创建列表只是浪费)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)