python 条件语句的解释
a = (i for i in range(100) if not (i %2)and (i%3))
这个语句该怎么理解?
代码敲错了吧
https://blog.csdn.net/java_pythons/article/details/106999515 尝试一下这个代码
a =
print(a)
print("\n--------我是一条分割线--------\n")
b = []
for i in range(100):
if (i % 2 == 0) and (i % 3 != 0):
b.append(i)
print(b)
本帖最后由 hrp 于 2021-3-27 16:49 编辑
# 生成器
a = (i for i in range(100) if not (i %2)and (i%3))
# 列表推导式
a =
列表推导式展开后相当于
a = []
for i in range(100):
if not (i %2)and (i%3):
a.append(i)
hrp 发表于 2021-3-27 16:47
# 生成器
a = (i for i in range(100) if not (i %2)and (i%3))
if not (i %2)and (i%3):
我就是有点不太明白这句是什么意思? Daniel_Zhang 发表于 2021-3-27 16:45
尝试一下这个代码
if (i % 2 == 0) and (i % 3 != 0)到 if not (i %2)and (i%3) 怎么演变的呀?
前边的语句怎么变成后边那个的呀?
后边那句我的理解就是:如果 i 不能被 2 整除,并且不能被 3 整除。
前边那句号理解,就是能被 2 整除,不能被 3 整除。 江湖散人 发表于 2021-3-27 16:59
if not (i %2)and (i%3):
我就是有点不太明白这句是什么意思?
i%2 对2取余
i%3 对3取余
当i对2取余为0的时候,not i%2为True
当i对3取余不为0时,可以当做True
整句话连起来意思就是
ifi对2取余为0且i对3取余不为0 拆分一下
if i % 2:
表示的是当 i % 2 为 True 时通过,也就是 i % 2 不为 0 (False) 时通过
所以 if i % 2: 可以等同于 if i % 2 != 0
用 not 对 if i % 2: 取反,就变成了 if not i % 2: 也就是 if i % 2 == 0
现在来看另一半 if i%3:
现在你应该能理解了吧?根据我上面的解释
也就是 if i % 3 == True:
等同于 if i % 3 != 0
所以左右用 and 连起来
if (i % 2 == 0) and (i % 3 != 0)即为 if not (i %2)and (i%3)
hrp 发表于 2021-3-27 17:04
i%2 对2取余
i%3 对3取余
谢谢老师,你讲的比较专业,对于小白的我来说有点难理解, Daniel_Zhang 发表于 2021-3-27 17:14
拆分一下
if i % 2:
谢谢你,终于搞明白了,都被绕进去了。
页:
[1]