mozhi16 发表于 2020-6-21 11:35:53

[0]在python中表达什么呢?

问题背景,第21讲课后习题,第三题。

我写的是:
list(filter(lambda x:x if x%3==0 and x != 0 else None,range(100)))
后来发现不要 x != 0, 输出结果不变。
甚至:

>>> list(filter(lambda x:x if x%3==0 else None,))
[]


这里为什么不能输出呢?

但直接输出是可以的,比如:

>>> *2

>>>


求教,谢谢🙏

Twilight6 发表于 2020-6-21 11:37:34

本帖最后由 Twilight6 于 2020-6-21 11:45 编辑

一个列表里面有个元素 0

filter 函数是用来筛选用的 当返回 True时候留下,False 时候去掉

filter 第一个参数是函数 function,第二个参数可迭代对象 iterable

而你:>>> list(filter(lambda x:x if x%3==0 else None,))

可迭代对象只有一个 ,0%3 == 0 条件成立 返回 x = 0 而 filter 筛选0 时候 0可以看成bool类型值的 False 所以过滤了

导致输出的是 [] 空列表

mozhi16 发表于 2020-6-21 11:45:26

Twilight6 发表于 2020-6-21 11:37
一个列表里面有个元素 0

谢谢您,但我还是不太懂,😂 是不是,filter的结果是一个可迭代的函数,以list形式输出来,但有个元素 0 ,为什么不输出呢?
我试了一下tuple

>>> tuple(filter(lambda x:x if x%3==0 else None,))
()

也是一个空,请问里面有元素吗?

Twilight6 发表于 2020-6-21 11:46:10

mozhi16 发表于 2020-6-21 11:45
谢谢您,但我还是不太懂,😂 是不是,filter的结果是一个可迭代的函数,以list形式输出来,但有个 ...

我重新发了 你可以看看~

mozhi16 发表于 2020-6-21 11:47:22

Twilight6 发表于 2020-6-21 11:46
我重新发了 你可以看看~

谢谢谢谢,懂啦,懂啦,太棒了!
页: [1]
查看完整版本: [0]在python中表达什么呢?