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

Python中如何将一维数组拆分为连续相邻的二元子数组?

解决滑动窗口式数组分割问题

看来你需要的是滑动窗口式的重叠分割,而你现有的函数是做无重叠的固定块分割,这就是结果不符合预期的原因啦!

问题根源

你写的split函数逻辑是每次从数组头部切走size个元素,剩下的部分继续切割——这种方式得到的是完全不重叠的块,比如切完[1,2]后直接处理[3,4,5,6],自然得不到相邻元素组成的子数组。

解决方案:滑动窗口实现

我们需要遍历数组,每次取一个长度为size的连续窗口,并且窗口每次只向右移动1个元素。这里有两种实用的实现方式:

1. 手动循环实现(清晰易懂)

def sliding_split(arr, window_size):
    result = []
    # 遍历到倒数第window_size个元素就停止,避免索引越界
    for i in range(len(arr) - window_size + 1):
        # 取从i开始的window_size个连续元素
        result.append(arr[i:i+window_size])
    return result

# 测试验证
x = [1,2,3,4,5,6]
print(sliding_split(x, 2))  # 输出: [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]

2. 列表推导式(简洁高效)

如果追求代码简洁,用列表推导式一行就能搞定:

x = [1,2,3,4,5,6]
window_size = 2
result = [x[i:i+window_size] for i in range(len(x)-window_size+1)]
print(result)  # 同样得到目标结果

这样就能完美生成你想要的相邻元素组成的子数组啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:13:40