|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
list(filter(lambda n : not(n%3), range(1, 100)))
这里not(n%3),filter 是返回ture的,他是默认not(n%3)n除以3不等于0的意思吗??
我自己写的时候是list(filter(lambda x:x%3==0, range(0,100))
其实很好理解,先看bool函数,True,False,这两个有个隐含的概念:True等于1,False等于0
换句话说,表达式等于1的即为True,反之为False,然后条件语句写法,比如(if True)或者(while True),其实可以写成*if 1)或者*while 1),只要你没给特定的条件(比如(if n>3))的话,默认都是为True才继续后面的代码的。
小甲鱼老师给的代码先不看,看几个简单的:
- print(list(filter(lambda n:(n%3),range(10))))
复制代码
结果为:
因为n%3即是n除以3的余数,只要不能整除3的都有余数,例1%3等于1,2%3等于2……,那么这余数1,2结合前面说的,在表达式里都是判定为True,能整除3的都等于0,换句话都是False。
所以小甲鱼老师的代码原理是不是呼之欲出了?not(n%3)即看出n%3的not,也就是其实not(n%3)等价于n%3==0即为False的时候,前面说的为False就是可以整除3的,所以就可以输出3的倍数了。
我不知道说清楚没有,希望您可以理解
|
|