python – 列表理解和%函数

当我使用以下代码时

[i for i in range(-9, 10, 2) if not i%3)] 

它给

> (-9, -3, 3, 9)

为什么会给出答案? ‘i%3’是什么意思?

谢谢.

最佳答案 在您的示例中,%是
modulo operator.a%b返回a / b的余数.

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

[-9, -7, -5, -3, -1, 1, 3, 5, 7, 9]

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

不是我%3有点棘手.首先,评估i%3.如果结果大于0,则认为是True. not是一个布尔运算符,它得到布尔值的负数.所以不是True是假的(而不是False是真的).

0被认为是假,所以如果i%3 == 0,那么我将被包含在新列表中.

现在,print(“%s%s”,(“hello”,“world”))打印“hello world”的原因是因为它不是模运算符.这是string formatting.文档将比我更好地解释它:p.只是使用了%.

点赞