关于课后lambda的用法疑问
filter(函数,可迭代对象)了解,这个lambda n:not(n%3)看了答案我知道它是整除以3,但是这个not 是返回布尔值,紧着套着n%3,这个要怎么理解,请大佬赐教{:10_254:} 从1到99范围内,取n%3非0的。 这就是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:44 编辑
要知道Python中 只要 0 、空字符串、空列表、空字典等 都可以看作布尔类型的值为 False
只要是 非0 ,非空字符串、列表、字典 等 都可以看作布尔类型的值为 True
而且这是求余操作,不是整除哦,只是判断是否整除来过滤 不是 3 的倍数的值
所以只要看 求余后是不是零 来判断要不要过滤
Twilight6 发表于 2020-5-28 10:30
而且这是求余操作,不是整除哦,只是判断是否整除来过滤 不是 3 的值
所以只要看 求余后是不是零 来 ...
对啊,我没考虑到参数过滤掉为0的值,还一直纠结这个not(n%3)可以为True,也可以false。 是我要的点 渣渣在此 发表于 2020-5-28 10:42
对啊,我没考虑到参数过滤掉为0的值,还一直纠结这个not(n%3)可以为True,也可以false。 是我要的点
https://xxx.ilovefishc.com/forum/202005/27/132745rjvcvw1z2148jthd.gif
页:
[1]