【小算法】Python中对不定长度的集合,最大值为X,大于X的进行平均分组,如果不能平均分组的,每组相差不能超过1
- 算法刷题
- 时间:2023-06-06 23:59
- 3076人已阅读
简介
有list的长度是x,如果长度不大于20,就不分割,如果大于20进行平均分配,但是每组长度相差不能超过1。比如长度21分割两组,一组长度11一组长度10;再比如长度55,分三组,每组长度分别是19,18,18lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,&nbs
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
有list的长度是x,如果长度不大于20,就不分割,如果大于20进行平均分配,但是每组长度相差不能超过1。比如长度21分割两组,一组长度11一组长度10;再比如长度55,分三组,每组长度分别是19,18,18
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55] if len(lst) <= 20: result = [lst] else: num_groups = len(lst) // 20 + (len(lst) % 20 > 0) # 计算需要分成多少组 group_size = len(lst) // num_groups # 计算每组的基本大小 remaining = len(lst) % num_groups # 计算剩余的元素数量 result = [] for i in range(num_groups): group = lst[i * group_size : (i+1) * group_size] # 按照基本大小取出元素 if remaining > 0: group.append(lst[-remaining:]) # 如果还有剩余的元素,则追加到这一组中 remaining -= 1 result.append(group) print(result)
解释:
首先,将需要分割的列表存储在变量lst中。对于长度不大于20的情况,直接将列表作为结果返回。对于长度大于20的情况,计算需要分成多少组(num_groups),基本上每组的大小(group_size),还有剩余的元素数量(remaining)。然后,使用for循环迭代每一组,按照基本大小(i * group_size : (i+1) * group_size)取出元素,并且如果还有剩余的元素,则追加到这一组中。最后,将所有组合成的结果存储在变量result中并返回。