假设我有以下列表:
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])
关于python - 获取列表中每 n 个项目的一大块项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53873901/