从Python 2 到3 的过渡中,filter、map 和reduce 的行为发生了实质性的变化.
视图和迭代器而不是列表
为了提高效率,映射和过滤器现在返回迭代器而不是列表。例如,在 Python 2 中,filter(f, range(2, 25)) 返回过滤值的列表,而在 Python 3 中,它返回一个迭代器。一个简单的修复方法是使用 list(map(...)) 将迭代器显式转换为列表,但更优雅的解决方案通常涉及列表推导式或重构代码以消除对列表的需要。
删除了reduce
Python 3 删除了内置的reduce 函数。相反,它建议在必要时使用 functools.reduce。然而,正如文档所指出的,显式 for 循环通常更具可读性,并且适合 99% 的情况。
结论
这些更改旨在提高效率和Python 3 内置函数的设计。通过遵循文档中提供的指导,开发人员可以有效地利用迭代器和替代方法在 Python 3 中实现与 Python 2 代码类似的功能。
以上是从 Python 2 到 Python 3,'filter”、'map”和'reduce”是如何变化的?的详细内容。更多信息请关注PHP中文网其他相关文章!