2

我曾经在 Python 2.7 中使用 IDLE 进行交互式编程。在 2.7 中,当我执行以下操作时:

map(... some fn ..., ... some collection ...)

或者

filter(... some fn ..., ... some collection ...)

我得到的结果是应用函数产生的集合。

升级到 Python 3.2 后,当我执行相同操作时,我只会得到“过滤器对象”或“映射对象”,并且必须手动遍历集合以查看结果。

这是有意的吗?您是否知道任何 Python 3.2 IDE 在打印函数输出方面会表现得像旧的 IDLE?我基本上是在寻找“REPL for Python”。

4

1 回答 1

5

这与 IDLE 无关;filter()map()函数在 Python 3 中发生了变化,现在返回一个迭代器而不是一个列表:

filter: 构造一个迭代器...

map: 返回一个迭代器...

如果您想以列表的形式查看结果,请使用list(filter(...))and 。list(map(...))

或者,您可以使用列表推导:

[func(item) for item in somelist]  # same as list(map(func, somelist))
[item for item in somelist if func(item)]  # same as filter(func, somelist))
于 2012-10-30T10:35:39.567 回答