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

基于固定窗口大小与数据交集的数组填充实现

实现固定窗口滑动生成指定长度数组的方案

我来帮你梳理这个需求的实现思路和代码方案,其实核心就是固定重叠长度的滑动窗口逻辑,咱们一步步拆解:

先明确核心规则

从你的目标输出反推,关键逻辑是:

  • 每行数组固定长度为10
  • 每次滑动时,保留上一行的最后3个元素(因为窗口大小是7,10-7=3,这样新添加7个元素后刚好凑满10个)
  • 当后续没有足够的原始数字时,用0填充空缺位置
  • 最终生成5行结果

Python代码实现

下面是直接可用的代码,运行后就能得到你要的目标数组:

# 初始化1到30的序列
initial_numbers = list(range(1, 31))
# 配置参数
row_length = 10       # 每行固定长度
window_size = 7       # 每次新增的窗口元素数
target_rows = 5       # 目标行数
overlap = row_length - window_size  # 每次保留的交集长度(这里是3)

result_rows = []
current_start_idx = 0

for _ in range(target_rows):
    # 计算当前行的元素范围,左闭右开
    end_idx = current_start_idx + row_length
    # 从原始序列取元素,不足的用0补全
    current_row = initial_numbers[current_start_idx:end_idx] + [0] * max(0, row_length - len(initial_numbers[current_start_idx:end_idx]))
    result_rows.append(current_row)
    # 更新下一行的起始索引:每次跳过窗口大小的长度(因为重叠部分已经保留)
    current_start_idx += window_size

# 打印结果(转成空格分隔的字符串)
for row in result_rows:
    print(' '.join(map(str, row)))

运行结果

执行代码后会输出:

1 2 3 4 5 6 7 8 9 10
8 9 10 11 12 13 14 15 16 17
15 16 17 18 19 20 21 22 23 24
22 23 24 25 26 27 28 29 30 0
29 30 0 0 0 0 0 0 0 0

逻辑解释

  1. 初始序列:用range(1,31)生成1到30的连续整数列表
  2. 滑动规则:每次起始索引增加window_size=7,这样下一行的起始位置刚好是上一行第(row_length - overlap)=7个元素的位置,自然保留了最后3个元素作为交集
  3. 补0处理:当原始序列的剩余元素不足10个时,用[0] * 缺失数量来填充,保证每行长度固定为10
  4. 循环控制:循环5次生成目标行数的结果

如果需要其他编程语言的实现,核心逻辑也是一样的:控制起始位置、截取元素、补0、循环生成即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:08:38