melly 发表于 2016-5-10 13:44:18

求助大神

>>> def fun(x):
        if x % 3 == 0:
                return x
        else:
                return None

       
>>> list(filter(fun,range(100)))





>>> list(filter(lambda x:x %3==0,range(100)))



求解这是原因,多出了0???

leozyre 发表于 2016-5-10 14:54:30

我猜是因为filter函数是将数列放进fun函数里进行运算后检测结果是True还是false,然后数字0就当成false所以没有输出,但是lambda不会直接把结果交给filter检测所以0可以正确显示吧

melly 发表于 2016-5-12 09:32:19

leozyre 发表于 2016-5-10 14:54
我猜是因为filter函数是将数列放进fun函数里进行运算后检测结果是True还是false,然后数字0就当成false所以 ...

嗯嗯,谢谢{:9_228:}

python大法好 发表于 2016-5-18 19:53:13

我也困惑于这一点,不太明白这两种机制的内部区别,但我想应该是因为当x=0时,fun函数return 0的问题吧。
页: [1]
查看完整版本: 求助大神