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

标签 python arrays list numpy

假设我有以下列表:

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

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

例如,如果 n=2k=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/

相关文章:

c# - 从列表的子集中高效地进行选择

python - 将每个文件与 Python 中另一个文件夹中的相应文件进行比较?

Python 从外部 C 程序调用中输出带有换行符的字符串

javascript - 在 AngularJS 中配对数组的相似对象

c++ - 从文本文件中读取,然后在程序中使用输入

python - 对数组数组中不同形状的数组的列求和 - Python 3.x

python - 我将如何获取一个 excel 文件并将其列转换为 Python 中的列表?

python - 有效地将大型 numpy 数组切片复制到较小的连续内存数组

python - 使用 OpenGL 在 Python 中进行 3d 绘图

javascript - 如何在显示之前过滤自动完成中的结果?