【问题标题】:Python List of Squares in Python3Python3中的Python正方形列表
【发布时间】: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


【解决方案1】:

list(map(lambda x: x**2, list(range(20)))) 应该这样做,但是对于像这样的简单任务,您应该使用列表推导而不使用 map

[x**2 for x in range(20)]

【讨论】:

  • 当然。这两个都有道理,谢谢。我想我也太在意了。
  • 如果这是答案,则将其标记为正确答案,以防止它在搜索结果中显示为未回答
  • 我可以再过 8 分钟左右..所以不会让我完全呢
猜你喜欢
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多