将简单的特殊 mod 函数简化为一行(逻辑上只有,而不是三级运算符)



我想要一个简单的函数,它返回一个数字的mod,但在n%n的情况下,我想要值n而不是0。

我的函数是:

def special_mod(m,n):
    if  m%n != 0:
        return m%n
    else 
        return n

我真正想要的是一个不包含条件的单行逻辑。仅供参考:(m+1)%n,m%(n+1)不适用于所有输入(我的输入)

从逻辑上讲,我想要这样的东西

  1. 我不喜欢的原始模组:0 1 2 3 4 5(对于n = 6)

  2. 我的特殊模组:6 1 2 3 4 5(对于 n = 6)循环值为5 后 6 和 6 后 1

可以在不使用 m!=n 等条件的情况下实现吗?

任何原因:(m-1)%n+1不起作用,例如:

>>> n = 6
>>> [(m-1)%n+1 for m in range(12)]
[6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5]

m%n or n(m-1)%n+1就可以了。

最新更新