Skip to main content
 首页 » 编程设计

python之获取列表中每 n 个项目的一大块项目

2025年05月04日12kuangbin

假设我有以下列表:

l = [4,3,1,5,3,5,8,11,10,4,12,2,1] 

为了获得长度为 n 的 block ,在 block 之间留下 k 项目,最 pythonic 的方法是什么来切片 l?

例如,如果 n=2 和 k=3,结果应该是:

[4,3,5,8,12,2] 

请您参考如下方法:

使用列表理解:

[e for i in range(0, len(l), n+k) for e in l[i:i+n]] 
# [4, 3, 5, 8, 12, 2] 

numpy 解决方案是:

import numpy as np 
 
idx = (np.arange(0, len(l), n+k)[:,None] + np.arange(n)).ravel() 
np.array(l)[idx] 
# array([ 4,  3,  5,  8, 12,  2])