在Python 2中,filter、map和reduce函数提供了操作数据的简洁方法收藏。然而,这些函数在Python 3中发生了重大变化。
filter和map现在返回迭代器,而不是返回列表。这一变化符合 Python 3 倡导懒惰和高效的设计理念。迭代器通过根据需要产生元素来节省内存并提高性能,而不是提前创建整个列表。
要获得与过滤器或映射结果等效的列表,可以使用 list() 函数如下:
filtered_list = list(filter(f, range(2, 25))) mapped_list = list(map(cube, range(1, 11)))
Python 3 已删除了reduce 函数。它已被降级为 functools 模块,称为 functools.reduce()。这一变化是由围绕使用reduce 的误解引发的。在大多数情况下,显式 for 循环被认为更具可读性和效率。
请注意,functools.reduce() 与 Python 2 中的 reduce 具有相同的用途。但是,如果您的代码严重依赖于 reduce,请重新访问它建议探索替代方法(例如显式 for 循环或高阶函数)。
通过接受这些更改,您可以使您的 Python 代码适应最新版本并采取其在性能和可读性方面的改进优势。
以上是Python 3 的'filter”、'map”和'reduce”有何变化,以及如何调整我的代码?的详细内容。更多信息请关注PHP中文网其他相关文章!