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

如何按固定周期筛选Python数组元素:保留5个丢弃15个循环执行

高效实现方案

按你说的「每20个元素为一个周期,前5个保留、后15个丢弃」的规则,分场景给出最优实现:


纯Python原生实现(无第三方依赖)

直接通过索引取模判断即可,时间复杂度O(n),适合小数据量或者不能装第三方库的场景:

# 直接返回新列表
def select_5_drop_15(arr):
    return [item for idx, item in enumerate(arr) if idx % 20 < 5]

# 超大数组场景用生成器,内存占用O(1)
def select_5_drop_15_iter(arr):
    for idx, item in enumerate(arr):
        if idx % 20 < 5:
            yield item

示例:输入长度为25的数组,会返回前5个、第21~25个,总共10个元素,完全符合规则。


Numpy实现(数值数组最优)

如果是数值类数组,用numpy的向量化操作效率最高,万级以上数组的处理速度是纯Python的50~100倍:

import numpy as np

# 把原数组转为numpy数组
np_arr = np.array(你的原数组)
mask = np.arange(np_arr.shape[0]) % 20 < 5
result = np_arr[mask]
  • 不需要写Python层循环,完全由numpy底层C逻辑执行,性能拉满
  • 自动兼容非20整数倍长度的数组,末尾不足一个周期的部分也会按规则处理

规则调整方法

如果后续需要修改保留/丢弃的数量,只需要修改两个参数即可:

  • 模的数值 = 保留数量 + 丢弃数量
  • 判断条件为索引取模结果 < 保留数量
    比如要改成保留3个、丢弃7个,就把idx %20 <5改成idx %10 <3即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:27:02