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

如何在Python中分块循环处理列表数据(每次处理20行)

嘿,这个分块迭代(chunking/iterating in chunks)的需求其实超容易解决,给你几个简洁直观的Python方案,完全贴合你想要的循环逻辑:

方案1:直接用列表切片(最简洁直观)

因为你已经把文件内容读到了列表Input里,用range配合步长就能轻松分块:

chunk_size = 20
# 从0开始,每次跳20个索引,遍历所有分块
for i in range(0, len(Input), chunk_size):
    # 取出当前块的内容,最后一块不足20行也会自动处理
    current_chunk = Input[i:i+chunk_size]
    magic_function(current_chunk)

这个方法代码少、易理解,100行刚好分成5个20行的块,完美适配你的场景。

方案2:用生成器函数(可复用+内存友好)

如果之后你需要频繁做分块操作,或者处理的文件远大于100行,写个生成器函数可以复用,而且不会一次性把所有分块都加载到内存里:

def chunk_generator(sequence, chunk_size):
    # 按步长遍历序列的索引
    for start_idx in range(0, len(sequence), chunk_size):
        # 生成当前分块
        yield sequence[start_idx:start_idx+chunk_size]

# 循环调用生成器,处理每个分块
for chunk in chunk_generator(Input, 20):
    magic_function(chunk)

方案3:用itertools.islice(适合迭代器场景)

如果你之后不想把整个文件读到列表里(比如超大文件),itertools.islice可以直接对文件迭代器分块,当然也适用于你现在的列表:

from itertools import islice

# 把列表转成迭代器
input_iter = iter(Input)
while True:
    # 每次从迭代器里取20个元素
    chunk = list(islice(input_iter, 20))
    # 如果chunk为空,说明已经处理完所有内容,退出循环
    if not chunk:
        break
    magic_function(chunk)

这几个方案都能实现你想要的for (20 lines) in Input as lines: magic_function(lines)逻辑,其中方案1是最直接的,完全满足你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:05