我希望能够执行以下操作...
假设我想要一个 100-500 的每个数字的列表,它是 33 的倍数。
>>> a = 100
>>> b = 500
>>> range(a,b,33)
[100, 133, 166, 199, 232, 265, 298, 331, 364, 397, 430, 463, 496]
这不是我想要的,这是因为a
不是 33 的倍数。
要获得下一个 33 的倍数,a
我可以这样做:
a = a - a % 33 + 33
我想知道是否有一种更简单的方法可以做到这一点,这样如果我想在不知道实际值并且不必事先定义它们的情况下创建这个范围..
如:
>>> def multiple(a, b, c):
return range(a+=%c, b, c) #if this was possible
显然它会返回一个正确的范围,例如:
>>> multiple(100, 500, 33)
[132, 165, 198, 231, 264, 297, 330, 363, 396, 429, 462, 495]
我知道我可以做一些简单的事情,比如:
range(a - a%c + c, b, c)
但是,没有详细说明,a
在我的情况下调用 的值对我来说是昂贵的,我希望能够找到一种不必再次调用它的方法,而且上述方法真的不好看一点也不。
我真的不确定我的问题的标题应该是什么,但我想我正在寻找的是一种在另一个给定数字之后找到一个数字的下一个倍数的方法。
谢谢你。