【问题标题】:What should be result for -1%5 in python [duplicate]python中-1%5的结果应该是什么[重复]
【发布时间】: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) = 5U = 1的时候,为什么应该是-1 % 5 = 4的结果?

【问题讨论】:

    标签: python


    【解决方案1】:

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

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

    因此,余数为4

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 不错的代码。当 n 为负数时也有效。
      猜你喜欢
      • 2011-06-29
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 2014-07-25
      • 2017-07-15
      • 2015-12-23
      • 1970-01-01
      相关资源
      最近更新 更多