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

Python实现列表按指定长度分块且允许末尾块重复元素

实现方法

你只需要在原有分块逻辑的基础上调整最后一块的取值即可,核心逻辑是如果最后一个分块长度不足指定值,直接取列表末尾的x个元素作为最后一块,自动复用前面的元素凑齐长度。

易读版本实现

test_list = ['1','2','3','4','5','6','7','8','9','10']
x = 3

def chunk_with_pad(test_list, chunk_size):
    # 先按原有逻辑生成分块
    chunks = [test_list[i:i+chunk_size] for i in range(0, len(test_list), chunk_size)]
    # 最后一块长度不足时替换为列表末尾chunk_size个元素
    if len(chunks[-1]) < chunk_size:
        chunks[-1] = test_list[-chunk_size:]
    return chunks

output = chunk_with_pad(test_list, x)
print(output)
# 输出结果:[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['8', '9', '10']]

一行lambda版本

如果需要更简洁的写法可以用lambda实现:

final_list = lambda l, s: [l[i:i+s] for i in range(0, len(l), s)] if len(l) % s == 0 else [l[i:i+s] for i in range(0, len(l)-s, s)] + [l[-s:]]
output = final_list(test_list, x)

边界说明

如果你的场景中存在列表总长度小于分块长度的情况,可以额外加个判断,直接返回包含原列表的单元素列表即可,例如:

def chunk_with_pad(test_list, chunk_size):
    if len(test_list) <= chunk_size:
        return [test_list]
    chunks = [test_list[i:i+chunk_size] for i in range(0, len(test_list), chunk_size)]
    if len(chunks[-1]) < chunk_size:
        chunks[-1] = test_list[-chunk_size:]
    return chunks

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:54:04