【发布时间】:2015-02-24 04:22:29
【问题描述】:
在 Python 2.X 中,我知道要输出一个正方形列表就这么简单:
map(lambda x: x**2, range(20)),因为它会输出一个列表(迭代器),而不是生成器。
但是在 Python 3.X 中,这会返回一个有趣的生成器,但在输出列表时会造成基本障碍。我尝试了相同的语法,并且正如预期的那样,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))]
但是它似乎有点污染,我觉得可以有一种更简单的方法来绕过生成器并简单地输出一个列表。
我错过了什么吗?
【问题讨论】:
-
这有什么污染?
-
我只是觉得它可以更简单和/或更精简。可能是我太挑剔了……
-
您是否试图避免使用基本的列表理解,而根本没有
map? -
@FMc 不管怎样,只是想看看一堆方法
标签: python list lambda iterator generator