努力去见你 发表于 2020-4-27 17:09:26

下面两个匿名函数能不能转换成普通函数,并打印出结果

list(filter(lambda x:x if x%3==0 else None,range(100)))
list(filter(lambda x:x%3==0,range(100)))

zltzlt 发表于 2020-4-27 17:10:38

你是指lambda x:x if x%3==0 else Nonelambda x:x%3==0这两个匿名函数转化为普通函数??

qiuyouzhi 发表于 2020-4-27 17:11:15

很简单啊
def func1(x):
    return x % 3 == 0

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

永恒的蓝色梦想 发表于 2020-4-27 17:11:38

def func(x):
    if x%3==0:
      return x
    return None

print(list(filter(func,range(100))))def func(x):
    return x%3==0

print(list(filter(func,range(100))))

努力去见你 发表于 2020-4-27 17:16:57

永恒的蓝色梦想 发表于 2020-4-27 17:11


麻烦问一下,为什么第一个结果没有0,第二个结果有0吗

努力去见你 发表于 2020-4-27 17:18:30

永恒的蓝色梦想 发表于 2020-4-27 17:11


是不是因为第一个x=0时return 0,所以不输出,但是第二个return的是1

永恒的蓝色梦想 发表于 2020-4-27 17:19:05

努力去见你 发表于 2020-4-27 17:16
麻烦问一下,为什么第一个结果没有0,第二个结果有0吗

第一个函数在传入 0 的时候 ,因为 0%3==0 ,所以会返回 0,但是 0 是假值
第二个函数 则会返回 True

努力去见你 发表于 2020-4-27 17:21:49

qiuyouzhi 发表于 2020-4-27 17:11
很简单啊

这个我知道,最后打印没打印明白,现在知道了
页: [1]
查看完整版本: 下面两个匿名函数能不能转换成普通函数,并打印出结果