假设我有一个数字100,需要将其分成 N 份,每份最初不应超过 30。因此初始分组为 (30,30,30)。余数(即 10)将通过连续向每个组添加 2 来分配到这三个组中,从而确保每个组都是 2 的倍数。因此,所需的输出应类似于 (34,34,32)。
注意:原始数字始终是偶数。
我尝试用 Python 解决这个问题,这就是我想到的。显然它并没有按照我想象的方式工作。它通过向每个组迭代添加 1(而不是根据需要添加 2)来分配余数。
num = 100
parts = num//30 #Number of parts into which 'num' is to be divided
def split(a, b):
result = ([a//b + 1] * (a%b) + [a//b] * (b - a%b))
return(result)
print(split(num, parts))
Run Code Online (Sandbox Code Playgroud)
输出:
[34, 33, 33]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
[34, 34, 32]
Run Code Online (Sandbox Code Playgroud) 我有两个单独的列表,其中包含要创建的新数据框df 的列名。
fixed <- list("a", "b")
variable <- list("a1", "b1", "c1")
Run Code Online (Sandbox Code Playgroud)