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

如何在Python中迭代获取列表固定长度元素块直至列表末尾?

高效分割Python列表为固定大小块的Pythonic实现

这里有几种简洁高效的方法,完全避免手动计数的繁琐操作:

方法1:列表推导式 + 切片(适合小到中等规模列表)

直接利用Python的切片特性,结合步长为块大小的range生成索引,一行代码搞定:

mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
chunk_size = 5
chunks = [mylist[i:i+chunk_size] for i in range(0, len(mylist), chunk_size)]

# 输出结果:[[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14]]

这种方式代码简洁直观,生成完整的列表块集合,适合直接处理所有块的场景。

方法2:迭代器 + itertools.islice(适合超大列表,内存友好)

如果你的列表非常大,一次性生成所有块会占用过多内存,用生成器配合islice可以逐个生成块,按需处理:

from itertools import islice

def chunk_generator(lst, chunk_size):
    lst_iter = iter(lst)
    while True:
        chunk = list(islice(lst_iter, chunk_size))
        if not chunk:
            break
        yield chunk

# 使用示例
mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
for chunk in chunk_generator(mylist, 5):
    # 在这里处理每个块,比如打印或执行业务逻辑
    print(chunk)

这个方法不会一次性加载所有块到内存,而是每次生成一个块,处理完再生成下一个,适合处理百万级以上的大型列表。

为什么这些是Pythonic?

  • 避免了手动维护计数变量(比如i += 5这类繁琐操作)
  • 充分利用Python内置的序列特性(切片)和迭代器工具,代码可读性高
  • 两种方法分别适配不同规模的列表场景,兼顾简洁性和性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:34:54