首页 > 解决方案 > 按分隔符拆分数字

问题描述

我想创建一个函数,该函数可以通过除法器轻松拆分数字,并通过以下方式返回商和余数:

[6,6,6,3] = function(21, 6)
[2,2,2] = function(6,2)

我使用 while 循环计数,直到达到零:

divider = 6
start = 21
ret = []
while start >= divider:
    ret.append(divider)
    start -= divider
if start:
    ret.append(start)

我想知道是否有更简单/pythonic 的方式来做到这一点。

标签: python

解决方案


您可以使用例如地板除法和模数来计算:

def function(n, d):
    return [d] * (n // d) + [n%d] if n%d else []

>>> function(21, 6)
[6, 6, 6, 3]
>>> function(6, 2)
[2, 2, 2]

还有一个内置divmod函数,可以一步计算两者:

def function(n, d):
    div, mod = divmod(n, d)
    return div * [d] + bool(mod) * [mod]

推荐阅读