sách gpt4 ăn đã đi

Python:过滤器(函数,序列)和映射(函数,序列)之间的区别

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 22:10:48 29 4
mua khóa gpt4 giày nike

我正在阅读 Python 文档以真正深入了解 Python 语言,并遇到了 filter 和 map 函数。我以前使用过过滤器,但从未使用过映射,尽管我在 SO 上的各种 Python 问题中都见过这两种情况。

在 Python 教程中阅读了它们之后,我对两者之间的区别感到困惑。例如,来自 5.1.3. Functional Programming Tools :

>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]

>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

在我看来,它们的功能几乎完全相同,所以我进入终端以交互方式运行 Python 并测试了我自己的案例。我对上面的第一个和第二个实例都使用了 bản đồ ,而对于第一个实例( return x % 2 != 0 and x % 3 != 0 )它返回了一个 bool 值列表而不是数字。

Tại sao bản đồ 有时返回 bool 值而有时返回实际返回值?

谁能给我解释一下bản đồlọc的区别?

câu trả lời hay nhất

list(map(cube, range(1, 11)))

等价于

[cube(1), cube(2), ..., cube(10)]

虽然

返回的列表
list(filter(f, range(2, 25)))

相当于运行后的kết quả

result = []
for i in range(2, 25):
if f(i):
result.append(i)

注意,当使用bản đồ时,结果中的项目是cube函数返回的值。

Ngược lại,filter(f, ...)ở giữanếu返回的值并不是kết quả中的项。 f(i) 仅用于确定 nếu như giá trị Tôi 应保留在 kết quả ở giữa.


在 Python2 中,bản đồlọc 返回列表。在 Python3 中,bản đồlọc 返回迭代器。上面的 list(map(...))list(filter(...)) 用来保证结果是一个列表。

关于Python:过滤器(函数,序列)和映射(函数,序列)之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939596/

29 4 0
Cựu chiến binh CNTT
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress