鱼C论坛

 找回密码
 立即注册
查看: 2814|回复: 7

[已解决]课后习题21 求助用列表推导式算100以内3的倍数

[复制链接]
发表于 2019-12-23 22:31:07 | 显示全部楼层 |阅读模式

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

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

x
用列表推导式算100以内3的倍数
i for i in range(100) if not(i%3)
这个语句是列表推导式和3元操作符结合的吗,应该怎么理解呢。我能够理解列表推导式的意思,但是套入这个if之后理解不清了,求大神解答
最佳答案
2019-12-24 00:46:21
本帖最后由 凌九霄 于 2019-12-24 00:48 编辑
  1. a = [i for i in range(100) if not (i % 3)]
  2. #把上面的列表推导式改为正常迭代形式的话等价于下面的
  3. l = []
  4. for i in range(100):
  5.     if not i % 3:
  6.         l.append(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-23 22:57:55 | 显示全部楼层
  1. i for i in range(100) if not(i%3)
复制代码


3的倍数%3应该是等于0的,  0直接判断是为假所以加一个 not来矫正。而不等于0 说明不是3的倍数,直接判断是为真的,所以还是用not来pass掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-23 23:38:25 | 显示全部楼层
Stubborn 发表于 2019-12-23 22:57
3的倍数%3应该是等于0的,  0直接判断是为假所以加一个 not来矫正。而不等于0 说明不是3的倍数,直接判 ...

是的,这里我理解的。 我不理解的是if的条件来判断时,并没有写输出是什么。那是怎么输出来的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-24 00:02:03 | 显示全部楼层
18508410033 发表于 2019-12-23 23:38
是的,这里我理解的。 我不理解的是if的条件来判断时,并没有写输出是什么。那是怎么输出来的呢

为真的才会出现在左侧,即 i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-24 00:46:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2019-12-24 00:48 编辑
  1. a = [i for i in range(100) if not (i % 3)]
  2. #把上面的列表推导式改为正常迭代形式的话等价于下面的
  3. l = []
  4. for i in range(100):
  5.     if not i % 3:
  6.         l.append(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-24 03:34:43 | 显示全部楼层
下面的写法容易理解?
  1. [i for i in range(100) if (i%3 == 0)]
复制代码


1. 如果i 是3的倍数,就加到列表中。
2. Python 中只有数字0为 False,其他数字都是真,所以 if not (i % 3) 表示 i 是3 的倍数是 if 后面的表达式为真
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-24 20:45:27 | 显示全部楼层
  1. i for i in range(100) if not(i%3)
复制代码


遍历 range(100) 并把每一项赋值给 i,如果 i % 3 为 False(则 i % 3 == 0),则将 i 添加到列表里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-26 19:41:36 | 显示全部楼层
A = list(filter(lambda x : x if(x % 3 == 0) else None,range(0,100)))
print(A)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 02:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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