在python中应该得到-1%5的结果

时间:2013-12-26 05:55:30

标签: python

我正在尝试在python中编写列表旋转函数。我偶然发现了以下代码:

def move(p, U):
q = []
for i in range(0,len(p)):
    q.append(p[(i-U)%len(p)])

return q

这很完美。但我想知道何时len(p) = 5U = 1,为什么应该是-1 % 5 = 4的结果?

2 个答案:

答案 0 :(得分:0)

4。 Python %运算符总是为您提供与第二个操作数具有相同符号的余数。感谢Mat指出。

-1 = (5) * (-1) + 4

因此,余数为4

http://docs.python.org/2/reference/expressions.html#binary-arithmetic-operations

答案 1 :(得分:0)

a % b将返回一个符号为b的数字。

但是,您的列表轮换函数更好地表示为:

def move(l, n):
    n = n % len(l)
    return l[n:] + l[:n]