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

如何将列表精确分割为n个随机大小的子列表

实现列表的指定数量随机分割

将长度大于n的列表精确分割为n个随机大小的子列表(每个子列表至少包含1个元素),无需限制子列表的最大/最小尺寸,也不采用均等分布的分割方式,可通过以下Python代码实现:

import random

def split_list_into_n_random_chunks(lst, n):
    m = len(lst)
    if m <= n:
        raise ValueError("列表长度必须大于要分割的子列表数量")
    # 从元素间隙中随机挑选n-1个不重复的分割点并排序
    split_indices = sorted(random.sample(range(1, m), n-1))
    chunks = []
    start = 0
    # 根据分割点切片生成子列表
    for idx in split_indices:
        chunks.append(lst[start:idx])
        start = idx
    chunks.append(lst[start:])
    return chunks

# 示例使用
lst = [1,2,3,4,5,6,7,8]
n = 3
chunks = split_list_into_n_random_chunks(lst, n)
print(chunks)

代码逻辑说明

  • 先校验列表长度:只有当原列表长度大于n时,才能分割出n个至少含1个元素的子列表,否则抛出异常。
  • 生成分割点:原列表有m个元素时,元素间共有m-1个可分割的间隙,从中随机选取n-1个不重复的位置作为分割点,排序后保证分割顺序与原列表一致。
  • 切片生成子列表:遍历分割点,对原列表进行分段切片,最终得到n个随机大小的子列表。

每次运行代码都会得到不同的分割结果,比如可能输出[[1,2,3],[4],[5,6,7,8]]或[[1],[2,3,4,5],[6,7,8]]等,完全满足随机尺寸的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:53:18