渣渣在此 发表于 2020-5-28 10:26:36

关于课后lambda的用法疑问

filter(函数,可迭代对象)了解,这个lambda n:not(n%3)看了答案我知道它是整除以3,但是这个not 是返回布尔值,紧着套着n%3,这个要怎么理解,请大佬赐教{:10_254:}

heidern0612 发表于 2020-5-28 10:30:08

从1到99范围内,取n%3非0的。

qiuyouzhi 发表于 2020-5-28 10:30:11

这就是fliter的语法呀
前面的函数必须返回布尔值,我可以给你写一个filter,你看看:
def Filter(func, seq):
    for each in seq:
      if func(each):
            yield each


print(list(Filter(lambda n: not(n%3), range(1, 100))))

Twilight6 发表于 2020-5-28 10:30:23

本帖最后由 Twilight6 于 2020-5-28 10:44 编辑

要知道Python中 只要 0 、空字符串、空列表、空字典等 都可以看作布尔类型的值为 False

只要是 非0 ,非空字符串、列表、字典 等 都可以看作布尔类型的值为 True

而且这是求余操作,不是整除哦,只是判断是否整除来过滤 不是 3 的倍数的值

所以只要看 求余后是不是零 来判断要不要过滤

渣渣在此 发表于 2020-5-28 10:42:47

Twilight6 发表于 2020-5-28 10:30
而且这是求余操作,不是整除哦,只是判断是否整除来过滤 不是 3 的值

所以只要看 求余后是不是零 来 ...

对啊,我没考虑到参数过滤掉为0的值,还一直纠结这个not(n%3)可以为True,也可以false。 是我要的点

Twilight6 发表于 2020-5-28 10:44:32

渣渣在此 发表于 2020-5-28 10:42
对啊,我没考虑到参数过滤掉为0的值,还一直纠结这个not(n%3)可以为True,也可以false。 是我要的点

https://xxx.ilovefishc.com/forum/202005/27/132745rjvcvw1z2148jthd.gif
页: [1]
查看完整版本: 关于课后lambda的用法疑问