我有一些奇怪的数字,例如19 or 23.
这两个需要分成5 lists
,这样5个列表的总和就是19.换句话说,每个列表中有3.8个19/5 = 3.8。然而问题是我不能有小数,我想要舍入数字。是否有任何方法可以相应地对数字进行舍入,将4,4,3,4,4放入列表而不是3.8次?
更重要的是,有些不分为5个不同的数字。有些可能像77/12,因此分为12差异。列表中的数字分别为6或7,最终增加到77。
知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:8)
def split(number, length):
div, mod = divmod(number, length)
return [div+1]*mod + [div]*(length-mod)
>>> split(19, 5)
[4, 4, 4, 4, 3]
>>> split(23, 4)
[6, 6, 6, 5]
原始版本:
def split(number, length):
result = [number//length]*length
for i in range(number%length):
result[i] += 1
return result
答案 1 :(得分:0)
你走了。
def roundto(number,items):
start = [1 for i in xrange(items)]
reached = False
while not reached:
for i in xrange(len(start)):
start[i] += 1
if sum(start) == number:
return start
print roundto(19,5)
>>>
[4, 4, 4, 4, 3]