问题:最近遇到一个小问题,需要对列表中的元素分组,保证每组元素的和尽可能平衡,最后返回每组的值和所对应的下标,这里对处理办法进行记录,方便以后查看。  

  解决思路

    step1: 对列表进行排序,新建输出的空列表out_list[N];

    step2: 根据需要分组的个数$N$,每次遍历$N$个元素;

    step3: 循环执行step2,前后两次交替分配;

    step4: 处理最后未分配的元素,依次分配给out_list。

  代码

def listGroupBySum(arr, N):
    sorted_arr = sorted(enumerate(arr), key=lambda x:x[1])  # index: x[0]  value: x[1]
    out_list = [[] for i in range(N)]
    
    for i in range(len(arr) // N):
        for j in range(N):
            if i % 2 == 0:
                out_list[j].append(sorted_arr[i*N+j])
            else:
                out_list[N-j-1].append(sorted_arr[i*N+j])
    
    # the remain items of arr
    for i in range(len(arr) // N * N, len(arr)):
        out_list[i%N].append(sorted_arr[i])
        
    return out_list

  例子:

python列表分组

 

相关文章:

  • 2021-05-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-19
  • 2021-12-06
  • 2021-05-16
猜你喜欢
  • 2022-01-04
  • 2022-01-16
  • 2021-09-26
  • 2021-10-12
  • 2021-06-21
  • 2022-01-18
  • 2021-10-29
相关资源
相似解决方案