在Python 2.X中,我知道输出一个正方形列表就像这样简单:
map(lambda x: x**2, range(20))
,因为它会输出一个列表(迭代器),而不是一个生成器。
但是在Python 3.X中,这会返回一个有趣的生成器,但却在输出列表时构成了一个基本障碍。我尝试了相同的语法和预期,map返回一个map对象。我甚至尝试过:
map(lambda x: x**2, [x for x in range(20)])
仍然没有列表。
map()
返回一个地图对象生成器。
我能想到的最佳解决方案就是使用map()
作为基本列表理解作为列表'生成器迭代。
[x for x in map(lambda x: x**2, range(20))]
然而它似乎有点污染,我觉得可以有一种更简单的方法来绕过生成器并简单地输出一个列表。
我错过了什么吗?
答案 0 :(得分:3)
list(map(lambda x: x**2, list(range(20))))
应该这样做,但对于像这样的简单任务,您应该使用列表推导而不使用map
:
[x**2 for x in range(20)]