gpt4 book ai didi

Python - 将列表列表中的数字均匀划分

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:44 25 4
gpt4 key购买 nike

如何有效地将数字均匀分布在“n”组中?

我想到了这个函数,但它并不能完全均匀地划分这个数字。

def DivideList(total_num, div_num):

div = int(total_num)/int(div_num)

if (div_num < total_num):
div_list = [[div*i, div*(i+1)] for i in range(div_num)]
div_list[div_num-1][1] = total_num
else:
div_list = [[i, i+1] for i in range(total_num)]

return div_list

print DivideList(100, 8)

这也可以通过列表理解来实现吗?

编辑:

示例:

DivideList(20, 4) >> [[0, 5], [5, 10], [10, 15], [15, 20]]

DivideList(14, 4) >> [[0, 4], [4, 8], [8, 11], [11, 14]]

最佳答案

示例1:

def DivideList(total_num, div_num):
div = total_num / div_num
left = total_num - div * div_num
result = []
m = 0
for i in xrange(left):
k = m
m += (div + 1)
result.append([k, m])

for i in xrange(div_num - left):
k = m
m += div
result.append([k, m])

return result

更简洁:

def DivideList(total_num, div_num):
div = total_num / div_num
left = total_num - div * div_num
result = []
for i in xrange(0, left*(div+1), div+1):
result.append([i, i+div+1])

for i in xrange(left*(div+1), total_num, div):
result.append([i, i+div])

return result

示例2:这是一个生成器,可以生成您想要的 block :

def DivideList(total_num, div_num):
div = total_num / div_num
left = total_num - div * div_num
m = 0
for i in xrange(left):
k = m
m += (div + 1)
yield [k, m]

for i in xrange(div_num - left):
k = m
m += div
yield [k, m]

更简洁:

def DivideList(total_num, div_num):
div = total_num / div_num
left = total_num - div * div_num
for i in xrange(0, left*(div+1), div+1):
yield [i, i+div+1]

for i in xrange(left*(div+1), total_num, div):
yield [i, i+div]

关于Python - 将列表列表中的数字均匀划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43395069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com