python中-1%5的结果应该是什么

python中-1%5的结果应该是什么,python,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)=5和U=1时,为什么会是-1%5=4的结果?它是4。Python%运算符始终为您提供与第二个操作数具有相同符号的余数。谢谢你指出这一点 -1=(5)*(-1)+4 因此,剩余的是4 a%b将返回一个带有b符号的数

我正在尝试用python编写一个列表旋转函数。我遇到了以下代码:

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

return q

这很好用。但是我试图弄清楚当
len(p)=5
U=1
时,为什么会是
-1%5=4
的结果?

它是
4
。Python
%
运算符始终为您提供与第二个操作数具有相同符号的余数。谢谢你指出这一点

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

因此,剩余的是
4


a%b
将返回一个带有
b
符号的数字

但是,列表旋转函数最好表示为:

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

代码不错。当n为负时也有效。