好好学不玩手机 发表于 2020-2-17 22:33:48

第021讲课后作业问题

题目要求是:你可以利用 filter() 和 lambda 表达式快速求出 100 以内所有 3 的倍数吗?
答案是:
print(list(filter(lambda x:not x%3,range(100))))
我的疑问是 5,8,11....等等这些数除3余2,为什么会把这些数也剔除掉?其他4,7,10等等除3余1剔除我明白。

冬雪雪冬 发表于 2020-2-17 22:36:21

not x%3意味着只要不是3的倍数就为False

好好学不玩手机 发表于 2020-2-17 22:44:22

冬雪雪冬 发表于 2020-2-17 22:36
not x%3意味着只要不是3的倍数就为False

x%3 不是x÷3的余数的意思吗?为什么not x%3就是False?我还是不明白,麻烦您再解释一下。

Python小萌新y 发表于 2020-2-17 22:46:57

我个人,萌新的理解哈,x%3为0就是false,notx%3就是ture了也不知道对不对如果理解有误希望大佬指出来

冬雪雪冬 发表于 2020-2-17 22:48:25

如果是3的倍数x%3为0,即False,否则为True。
not再取反,即3的倍数时为True,否则为False

zhh0707 发表于 2020-3-22 18:14:38

好好学不玩手机 发表于 2020-2-17 22:44
x%3 不是x÷3的余数的意思吗?为什么not x%3就是False?我还是不明白,麻烦您再解释一下。

因为X%3的余数为0,布尔数true和false对应的也是true=1,false=0,所以x%3=0=false,not false就变成true了,所以filter把true的值挑出来
页: [1]
查看完整版本: 第021讲课后作业问题