【发布时间】:2014-01-13 19:31:55
【问题描述】:
我正在尝试在 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的结果?
【问题讨论】:
标签: 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的结果?
【问题讨论】:
标签: python
它是4。 Python % 运算符始终为您提供与第二个操作数相同符号的余数。感谢Mat 指出。
-1 = (5) * (-1) + 4
因此,余数为4。
http://docs.python.org/2/reference/expressions.html#binary-arithmetic-operations
【讨论】:
a % b 将返回一个带有b 符号的数字。
但是,您的列表轮换函数最好表示为:
def move(l, n):
n = n % len(l)
return l[n:] + l[:n]
【讨论】: