如图两个函数,理论上逻辑是一样的,为何运行结果一个包含0,一个不包含0。
有热心人可以解惑吗?谢谢!
filter函数是根据前面判断函数的真假来进行的,因为0传入时lambda函数返回的是0,所以认为为假,故结果中不包含零
将式1中lambda函数修改如下即可正确判断
print(list(filter(lambda x:1 if( (x % 3) == 0) else 0, range(101))))
print(list(filter(lambda x: not (x % 3), range(101))))
有帮助望采纳~~
filter将布尔为False剔除,0布尔为False,第一种走if返回0的,被剔除了。
第二种写法,返回的0%3是前面还有个not,因此包含0