列表理解和%函数

Emm*_*mma 3 python list-comprehension list

当我使用以下代码时

[i for i in range(-9, 10, 2) if not i%3)] 
Run Code Online (Sandbox Code Playgroud)

它给

> (-9, -3, 3, 9)
Run Code Online (Sandbox Code Playgroud)

为什么会给出答案?什么'i%3'意思?

谢谢.

Ter*_*ryA 5

在您的示例中,%模运算符.a % b返回剩余的a / b.

所以在你的例子中,循环经历:

[-9, -7, -5, -3, -1, 1, 3, 5, 7, 9]
Run Code Online (Sandbox Code Playgroud)

-9 % 3等于0,因为-9可以被3整除,因此没有余数.但是,5 % 3返回2,因为3进入5次,并且5 - 3 == 2.

not i % 3有点棘手.首先,i % 3进行评估.如果结果大于0,则考虑它True.not是一个布尔运算符,它得到布尔值的负数.(和)not True也是如此.Falsenot False is True

0被认为是False,如果i % 3 == 0,那么i将被包括在新的列表中.


现在,print("%s %s", ("hello", "world"))打印"hello world" 的原因是因为它不是模运算符.这是字符串格式.文档会比我更好地解释它:p.它只是发生了%也被使用.