You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将非3整除长度的列表拆分为3个近似等长的子列表?

拆分列表为近似等长子列表的简便实现

针对你给出的列表:

lst = [26, 5, 20, 23, 19, 24, 16, 27, 21, 3, 2, 10, 9, 18, 25, 8, 0]

要拆成3个近似等长的子列表,核心思路是先算总长度除以3的商和余数:总长度17,商是5,余数是2——意味着前2个子列表各多1个元素(即6个),最后1个是5个元素。

直接切片实现(快速解决当前问题)

直接用Python的切片语法就能搞定:

a = lst[:6]
b = lst[6:12]
c = lst[12:]

# 结果验证
print(a)  # [26, 5, 20, 23, 19, 24]
print(b)  # [16, 27, 21, 3, 2, 10]
print(c)  # [9, 18, 25, 8, 0]

通用函数实现(适配任意列表和拆分数量)

如果需要适配不同长度的列表或拆分更多组,可以写个通用函数:

def split_approx_equal(lst, num_groups):
    total = len(lst)
    base_len, remainder = divmod(total, num_groups)
    result = []
    start = 0
    for i in range(num_groups):
        # 前remainder组多1个元素
        current_len = base_len + 1 if i < remainder else base_len
        end = start + current_len
        result.append(lst[start:end])
        start = end
    return result

# 调用函数拆分你的列表
a, b, c = split_approx_equal(lst, 3)

这个函数用divmod一次性算出基础长度和余数,然后循环分配每个子列表的起始和结束索引,逻辑清晰且复用性强。

内容的提问来源于stack exchange,提问作者Dila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:55:25