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

更优的Python列表拆分方法:如何将列表按指定数量灵活分块?

通用列表分块方案

基础实现(适用于中小规模列表)

直接给出可复用的通用函数,无需随分块数量调整代码,支持任意长度的列表和任意分块数:

def split_list(input_list, chunk_num):
    """
    将输入列表拆分为指定数量的子列表
    :param input_list: 待拆分的原始列表
    :param chunk_num: 需要拆分的子列表数量
    :return: 包含所有子列表的列表
    """
    avg_chunk_size = len(input_list) // chunk_num
    remainder = len(input_list) % chunk_num
    start = 0
    chunks = []
    for i in range(chunk_num):
        # 无法整除时,前remainder个块多分配1个元素,避免遗漏
        current_size = avg_chunk_size + 1 if i < remainder else avg_chunk_size
        chunks.append(input_list[start:start+current_size])
        start += current_size
    return chunks

使用示例

如果需要把100个元素的列表拆为5个20元素的子列表,直接调用即可:

list1 = ['boy', 'boy1', ..., 'end']
output_chunks = split_list(list1, 5)
# 分别取5个子列表
output1, output2, output3, output4, output5 = output_chunks

你原有代码里手动对每个分块切片、展开的操作完全可以省略,函数直接返回的就是每个子列表本身,没有多余嵌套。

超大列表优化实现(适用于10万级及以上元素)

如果待拆分的列表元素量极大,不需要一次性把所有分块加载到内存,可以用生成器实现,内存占用仅和单个分块大小相关:

def split_list_generator(input_list, chunk_num):
    avg_chunk_size = len(input_list) // chunk_num
    remainder = len(input_list) % chunk_num
    start = 0
    for i in range(chunk_num):
        current_size = avg_chunk_size + 1 if i < remainder else avg_chunk_size
        yield input_list[start:start+current_size]
        start += current_size

使用示例

迭代处理每个分块即可,无需存储全部分块:

for chunk in split_list_generator(your_large_list, 100):
    # 自行添加当前分块的处理逻辑
    process(chunk)

方案优势

  • 通用适配:修改chunk_num参数即可调整分块数量,无论分5块还是分1000块都不需要修改函数逻辑
  • 边界兼容:自动处理列表长度无法被分块数整除的场景,不会丢失元素
  • 效率极高:时间复杂度为O(n),和原列表长度线性相关,远优于手动逐个赋值的写法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:45:04