我正在尝试在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
的结果?
答案 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]