基于模/余数计算填充的简单方法

时间:2018-04-18 15:14:44

标签: python padding modulo

如果我有一个长度为L = 77的字符串,我想填充的长度是N = 10的倍数。我有兴趣计算所需的填充量。使用N - (L % N)可以轻松完成此操作,但L % N为零的情况除外。

我现在一直在使用以下内容:

pad = (N - (L % N)) % N

这似乎不太清晰,所以有时候我会用

pad = N - (L % N)
if pad == N:
    pad = 0

对于这么简单的事情,使用三行代码似乎有点过分了。

或者,我可以找到k的{​​{1}},但使用k * N >= L似乎也有点矫枉过正。

我缺少一个更好的选择吗?也许某个地方有一个简单的功能?

5 个答案:

答案 0 :(得分:3)

负L的模数可以做到。

pad = -1 * L % N

答案 1 :(得分:2)

这不够吗?

pad = (N - L) % N

答案 2 :(得分:1)

使用math.ceil

from math import ceil

def pad(l, n):
    return n*ceil(l/n) - l

assert pad(59, 10) == 1
assert pad(60, 10) == 0
assert pad(61, 10) == 9

答案 3 :(得分:0)

我的意思是你不能简单地做

pad = N-L if N-L > 0 else 0

答案 4 :(得分:0)

使用tenary conditional operator

0 if (L % N) == 0 else N - (L % N)