鱼C论坛

 找回密码
 立即注册
查看: 874|回复: 14

关于if not and的理解

[复制链接]
发表于 2020-4-13 16:33:00 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ronald627 于 2020-4-13 16:37 编辑

例如:
for x in range(100):
    if not (x % 2) and x % 3:
写成列表推导就是
[x for x in range(100) if not (x % 2) and x %3]

这个是怎么理解  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-13 16:38:48 | 显示全部楼层
你不理解的地方在哪里?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 16:41:37 | 显示全部楼层
本帖最后由 sunrise085 于 2020-4-13 16:43 编辑

if not (x % 2) and x % 3
意思就是对2求余为0,对3求余不为0啊
not (x % 2)是一个逻辑表达式,当x对2求余为0,表达式的结果才为True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 16:43:52 | 显示全部楼层
qiuyouzhi 发表于 2020-4-13 16:38
你不理解的地方在哪里?

x 余 2
x 余 3
放到if not and中这两个条件先判断谁
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 16:44:20 | 显示全部楼层
ronald627 发表于 2020-4-13 16:43
x 余 2
x 余 3
放到if not and中这两个条件先判断谁

写在前面的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 16:51:30 | 显示全部楼层
ronald627 发表于 2020-4-13 16:43
x 余 2
x 余 3
放到if not and中这两个条件先判断谁


not优先级要高于and
if not (x % 2) and x % 3
相当于
if (not (x % 2)) and (x % 3)
(not (x % 2)) 和 (x % 3)这两部分,从左向右进行判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 16:53:25 | 显示全部楼层
sunrise085 发表于 2020-4-13 16:41
if not (x % 2) and x % 3
意思就是对2求余为0,对3求余不为0啊
not (x % 2)是一个逻辑表达式,当x对2求 ...

看着有点懵,
if not:或者if:这种判断式,不应该理解为满足条件时返回True吗?
if not (x%2)不应该是理解成如果x 余 2不等于0 返回True吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 16:54:06 | 显示全部楼层

看着有点懵,
if not:或者if:这种判断式,不应该理解为满足条件时返回True吗?
if not (x%2)不应该是理解成如果x 余 2不等于0 返回True吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 16:56:05 | 显示全部楼层
ronald627 发表于 2020-4-13 16:54
看着有点懵,
if not:或者if:这种判断式,不应该理解为满足条件时返回True吗?
if not (x%2)不应该是 ...

1,是的
2,假设x等于6,6%2==0,也就是False
再用not取反,是True
也就是x余2等于0返回True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 17:15:48 | 显示全部楼层
ronald627 发表于 2020-4-13 16:54
看着有点懵,
if not:或者if:这种判断式,不应该理解为满足条件时返回True吗?
if not (x%2)不应该是 ...

你所说的
如果x 余 2不等于0 返回True
应该是not(x%2==0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 17:16:38 | 显示全部楼层
ronald627 发表于 2020-4-13 16:54
看着有点懵,
if not:或者if:这种判断式,不应该理解为满足条件时返回True吗?
if not (x%2)不应该是 ...

并不是,not True 为 False,not False 为 True。

假设 x 是 3,3 % 2 是 1,not 1 为 False
假设 x 是 4,4 % 2 是 0,not 0 为 True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 20:06:30 | 显示全部楼层
依次把100里的所有整数的值赋给x,如果x%2为零(x是偶数)   并且   x不能整除3,就把x加入到列表里
列表推导式的顺序是 for循环 -> if判断 ->把x加入列表

not优先级高于and,所以先管not,在去看and
x是偶数时:
      【x%2等于0,为假】
      【not(x%2)就为真,就会去判断x能否整除3】
      如果能整除:
            就把x加入列表
       如果不能:
            判断下一个数
如果不是:
       判断下一个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 14:28:27 | 显示全部楼层
_荟桐_ 发表于 2020-4-13 20:06
依次把100里的所有整数的值赋给x,如果x%2为零(x是偶数)   并且   x不能整除3,就把x加入到列表里
列表推 ...

我想来想去可能我纠结的点是那个 x % 2为真哪里。x % 2是可以整除的,所以我理解应该是为真,然后前面加了个not,那这里的结果不应该是false吗。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 14:30:31 | 显示全部楼层
本帖最后由 ronald627 于 2020-4-14 14:36 编辑
sunrise085 发表于 2020-4-13 16:41
if not (x % 2) and x % 3
意思就是对2求余为0,对3求余不为0啊
not (x % 2)是一个逻辑表达式,当x对2求 ...


感谢,其实你回答的已经很清楚了。现在也能理解了。
开始我纠结的点是那个 x % 2为真哪里。x % 2是可以整除的,所以我理解应该是为True,然后前面加了个not,那这里的结果不应该是false吗。

后来理解了 x如果是2  2%2结果是0 返回false ,然后not false就返回true了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 14:37:04 | 显示全部楼层
zltzlt 发表于 2020-4-13 17:16
并不是,not True 为 False,not False 为 True。

假设 x 是 3,3 % 2 是 1,not 1 为 False

您这么一说,完全理解了。感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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