Python如何按步长拆分列表为固定长度子列表的最短实现方法
错误原因
你当前写的b = [i for i in a[::2]]仅能提取列表下标为偶数的元素,得到的是一维列表[1,3,5,7,9],不符合两两分组的需求。
最短实现方案
最短的原生Python实现(兼容所有Python3版本)如下:
b = [a[i:i+2] for i in range(0, len(a), 2)]
实现逻辑
range(0, len(a), 2)生成步长为2的下标序列:0,2,4,6,8- 每次切片
a[i:i+2]截取连续2个元素组成子列表,即使原列表长度为奇数也能正常处理剩余元素
如果使用Python3.12及以上版本,可以用标准库内置方法,可读性更高:
from itertools import batched b = list(batched(a, 2))
内容的提问来源于stack exchange,提问作者hn_tired
相关产品推荐
相关产品推荐

