理解 Python 中函数式工具的演变:filter、map 和 reduce
在 Python 3 中,filter、map、与 Python 2 中的对应函数相比,Reduce 和 Reduce 函数发生了重大变化。这可能会导致习惯了以前语法的用户感到困惑,并且
对filter和map的更改
在Python 3中,filter和map都返回迭代器而不是列表。这是从生成具体数据结构转向提供更高效、更节省内存的视图的结果。如果需要获取列表作为结果,可以使用 list() 函数转换迭代器,例如列表(过滤器(f,范围(2, 25)))。然而,更好的解决方案是考虑列表推导式或重新编写代码以消除对列表的需要。
删除reduce
Python 3 已删除内置的- 在减少功能。相反,如果需要,用户应该使用 functools.reduce 函数。但是,需要注意的是,在大多数情况下,显式 for 循环提供了一种更具可读性和更高效的替代方案。
示例代码修改
适应提供的 Python 2代码改为Python 3,以下改动是必要:
# Python 2 filter(f, range(2, 25)) map(cube, range(1, 11)) reduce(add, range(1, 11)) # Python 3 list(filter(f, range(2, 25))) list(map(cube, range(1, 11))) functools.reduce(add, range(1, 11))
结论
通过了解 Python 3 中的这些变化,开发人员可以避免意外并编写有效利用该语言中可用的功能工具的代码。
以上是Python 的'filter”、'map”和'reduce”函数在 Python 3 中有何变化?的详细内容。更多信息请关注PHP中文网其他相关文章!