首页 >后端开发 >Python教程 >Python 3 中的'filter”、'map”和'reduce”有何变化?

Python 3 中的'filter”、'map”和'reduce”有何变化?

Susan Sarandon
Susan Sarandon原创
2024-11-27 15:38:10285浏览

How Have `filter`, `map`, and `reduce` Changed in Python 3?

Python 3:Filter、Map 和Reduce 实现的变化

在Python 2 中,filter、map 和reduce 的行为不同来自 Python 3 的对应版本。这源于 Python 3 中实现的几个重大更改:

列表上的视图和迭代器:

  • map() 和 filter() 现在返回迭代器而不是列表。要获取列表,请使用 list() 显式转换它们。

删除了 reduce():

  • reduce() 已从核心 Python 支持 functools.reduce() 函数。但是,显式 for 循环通常更具可读性和首选。

示例用法:

Python 2 代码片段可以更新为 Python 3,如下所示:

def f(x):
    return x % 2 != 0 and x % 3 != 0

# **Filter:** Use list() to obtain a list of filtered values
filtered_list = list(filter(f, range(2, 25)))

# **Map:** Similarly, use list() to convert the iterator to a list
cubed_list = list(map(lambda x: x ** 3, range(1, 11)))

# **Reduce:** Use functools.reduce() or an explicit for loop
from functools import reduce
add_result = reduce(lambda x, y: x + y, range(1, 11))

print(filtered_list)  # Output: [5, 7, 11, 13, 17, 19, 23]
print(cubed_list)   # Output: [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
print(add_result)   # Output: 55

额外资源:

  • [Python 3.0 更改](https://docs.python.org/3/whatsnew/3.0.html)
  • [map() 和视图](https://wiki.python.org/moin/Getting a map() to return a list in Python 3.x)

以上是Python 3 中的'filter”、'map”和'reduce”有何变化?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn