python列表分组

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

  解决思路

    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
复制代码

  例子:

 

posted @   半夜打老虎  阅读(2745)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示