鱼C论坛

 找回密码
 立即注册
查看: 1947|回复: 2

[已解决]python 第21课课后题

[复制链接]
发表于 2017-7-30 10:39:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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))
最佳答案
2017-7-30 13:20:18
其实很好理解,先看bool函数,True,False,这两个有个隐含的概念:True等于1,False等于0
换句话说,表达式等于1的即为True,反之为False,然后条件语句写法,比如(if True)或者(while True),其实可以写成*if 1)或者*while 1),只要你没给特定的条件(比如(if  n>3))的话,默认都是为True才继续后面的代码的。
小甲鱼老师给的代码先不看,看几个简单的:
  1. print(list(filter(lambda n:(n%3),range(10))))
复制代码

结果为:
  1. [1, 2, 4, 5, 7, 8]
复制代码

因为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的倍数了。
我不知道说清楚没有,希望您可以理解
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-30 11:06:57 | 显示全部楼层
x%3==0: 返回的是 True
not(n%3): n%3 = 0 是False,not False 返回的是 True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-30 13:20:18 | 显示全部楼层    本楼为最佳答案   
其实很好理解,先看bool函数,True,False,这两个有个隐含的概念:True等于1,False等于0
换句话说,表达式等于1的即为True,反之为False,然后条件语句写法,比如(if True)或者(while True),其实可以写成*if 1)或者*while 1),只要你没给特定的条件(比如(if  n>3))的话,默认都是为True才继续后面的代码的。
小甲鱼老师给的代码先不看,看几个简单的:
  1. print(list(filter(lambda n:(n%3),range(10))))
复制代码

结果为:
  1. [1, 2, 4, 5, 7, 8]
复制代码

因为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的倍数了。
我不知道说清楚没有,希望您可以理解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-1 04:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表