python - 按分隔符拆分数字
问题描述
我想创建一个函数,该函数可以通过除法器轻松拆分数字,并通过以下方式返回商和余数:
[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 的方式来做到这一点。
解决方案
您可以使用例如地板除法和模数来计算:
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]
推荐阅读
- python - 是否可以将 SQLAlchemy 表类名称作为参数传递。在 Python 函数中?
- c++ - lambda 中的自动参数类型导致“使用‘模板’关键字处理...”错误
- debian - 如何在 Windows 终端的 debian wsl 中运行 vagrant
- angular - JEST 测试 NestJS 服务模型和 Mongoose
- asp.net-mvc - 同一查询多次执行延迟执行
- powerbi - 创建一个名为“birth_year”的新列以从“birthdate”列中提取年份,并格式化为文本
- azure-storage - Azure blob 存储:在同一 Azure 存储帐户中使用访问层 ARCHIVE 复制 blob 不起作用
- ios - Swift - 如何填充数组
- python - 如何在 Pandas 中删除固定数量的标记行?
- c++ - 将 C 库与 C++ dll 链接:“未解析的外部符号 __mingw_vsnprintf”