Python 将列表拆分为X个大小相等的块?
我需要将整数列表拆分为Python 将列表拆分为X个大小相等的块?,python,python-3.x,Python,Python 3.x,我需要将整数列表拆分为nbChunks块,所有这些块都具有参数(max)中指示的总和 该函数应类似于: def split(list, nbChunks, max): 以及拆分的结果([25,5,10,13,7,30],3,30) 就像[[10,7,13],[30],[25,5]](我不在乎数字的顺序) 我已经尝试过对一个长列表进行排序,但从未得到相同的总数。 如果你有任何想法,请随时告诉我 以下是我目前的版本: def dispatchToServers(liste, nbServers,
nbChunks
块,所有这些块都具有参数(max
)中指示的总和
该函数应类似于:
def split(list, nbChunks, max):
以及拆分的结果([25,5,10,13,7,30],3,30)
就像[[10,7,13],[30],[25,5]]
(我不在乎数字的顺序)
我已经尝试过对一个长列表进行排序,但从未得到相同的总数。
如果你有任何想法,请随时告诉我
以下是我目前的版本:
def dispatchToServers(liste, nbServers, max):
liste.sort(reverse = True)
output = []
for server in range(nbServers):
contentOfServer = []
for element in liste:
if canAdd(element, contentOfServer,max):
contentOfServer.append(element)
liste.remove(element)
output.append(contentOfServer)
return output
def canAdd(element, serverContent,max):
if sum(serverContent, element) > max:
return False
else:
return True
这是通过使用
排列
功能查看所有可能的数据排列来实现的
从itertools导入置换
def分割块(数据、nb块、所需最大值):
对于排列排序(数据):
组=[]
组=[]
组总数=0
找到=真
对于订购中的x:
组。追加(x)
组_总计+=x
如果len(group)>nb_块或group_total>desired_max:
发现=错误
打破
elif(组总==所需最大值):
groups.append(组)
组=[]
组总数=0
如果发现:
返回组
一无所获
分割块([25,5,10,13,7,30],3,30)
请在代码中编辑您已经尝试过的内容,即使这是一个糟糕的第一次尝试OK,但代码相当长。您如何处理无法汇总到最大值的块?必须找到一个组合。这与。