Python Python3 中的方块列表
Python List of Squares in Python3
在 Python 2.X 中,我知道输出一个正方形列表就像这样简单:
map(lambda x: x**2, range(20))
,因为它会输出一个列表(迭代器),而不是生成器。
但是在 Python 3.X 中,这个 returns 生成器很有趣,但在输出列表方面构成了基本障碍。我尝试了相同的语法,正如预期的那样,map returns 一个地图对象。我什至尝试过:
map(lambda x: x**2, [x for x in range(20)])
仍然没有列表。
map()
returns 地图对象生成器。
我能想到的最佳解决方案是使用 map()
作为 'list' 生成器进行迭代的基本列表理解。
[x for x in map(lambda x: x**2, range(20))]
然而它似乎有点污染,我觉得可能有更简单的方法绕过生成器并简单地输出一个列表。
我是不是漏掉了什么?
list(map(lambda x: x**2, list(range(20))))
应该这样做,但是对于像这样的简单任务,您应该使用列表理解而不使用 map
:
[x**2 for x in range(20)]
在 Python 2.X 中,我知道输出一个正方形列表就像这样简单:
map(lambda x: x**2, range(20))
,因为它会输出一个列表(迭代器),而不是生成器。
但是在 Python 3.X 中,这个 returns 生成器很有趣,但在输出列表方面构成了基本障碍。我尝试了相同的语法,正如预期的那样,map returns 一个地图对象。我什至尝试过:
map(lambda x: x**2, [x for x in range(20)])
仍然没有列表。
map()
returns 地图对象生成器。
我能想到的最佳解决方案是使用 map()
作为 'list' 生成器进行迭代的基本列表理解。
[x for x in map(lambda x: x**2, range(20))]
然而它似乎有点污染,我觉得可能有更简单的方法绕过生成器并简单地输出一个列表。
我是不是漏掉了什么?
list(map(lambda x: x**2, list(range(20))))
应该这样做,但是对于像这样的简单任务,您应该使用列表理解而不使用 map
:
[x**2 for x in range(20)]