python filter map区别_filter()和map()之间的Python差异

作为python的新手,我只是想弄清楚filter()和map()之间的区别。

我写了一个示例脚本如下:def f(x): return x % 2 == 0

def m(y): return y * 2

list = [1,2,3,4]

flist = filter(f, list)

print(list)

print(flist)

mlist = map(m, list)

print(list)

print(mlist)

我们看到过滤器和映射都传递一个列表并将其输出分配给一个新列表。

此脚本的输出为[1, 2, 3, 4]

[2, 4]

[1, 2, 3, 4]

[2, 4, 6, 8]

问题是filter和map的函数调用看起来是一样的,所以如果我们交换传递给它们的函数的内容,它们将如何表现。def f(x): return x * 2

def m(y): return y % 2 == 0

list = [1,2,3,4]

flist = filter(f, list)

print(list)

print(flist)

mlist = map(m, list)

print(list)

print(mlist)

这将导致[1, 2, 3, 4]

[1, 2, 3, 4]

[1, 2, 3, 4]

[False, True, False, True]

这显示filter对函数求值,如果为true,则返回传递的元素。

这里是函数def f(x): return x * 2

评估为def f(x): return x * 2 != 0

相反,map计算函数表达式并将结果作为项返回。

所以filter总是希望它的函数执行比较类型的任务来过滤掉元素,而map则希望它的函数对语句求值以获得某些结果。

这种理解正确吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值