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

如何对数组执行切片操作?以生成连续相邻元素子数组为例

生成数组相邻元素对子数组的几种方法

嘿,这个需求在处理序列数据时挺常见的,我给你分享几个Python里的实用实现方式,都能轻松得到你想要的结果:

方法1:列表推导式(简洁直观)

这是最常用的写法,一行代码就能搞定,利用Python的切片特性:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = [a[i:i+2] for i in range(len(a)-1)]
print(result)

解释一下:range(len(a)-1) 确保我们遍历到倒数第二个元素(索引8),这样a[i:i+2]每次都会取当前元素和下一个元素组成子数组,不会出现索引越界的问题,最终生成9个符合要求的子数组。

方法2:zip函数(Pythonic风格)

用zip函数可以更优雅地实现,它能把两个序列对应位置的元素配对:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 先得到元组对,再转成列表的列表
result = [list(pair) for pair in zip(a, a[1:])]
print(result)

这里a[1:]是原数组从第二个元素开始的切片[2,3,...,10],zip(a, a[1:])会把a的每个元素和a[1:]对应的元素配对,比如(1,2)、(2,3)...最后自动截断到较短序列的长度,正好得到9对。如果接受元组形式的子元素,直接list(zip(a, a[1:]))就可以了。

方法3:普通循环(适合新手理解)

如果刚接触Python,用循环一步步实现会更清晰:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = []
for i in range(len(a)-1):
    # 每次取当前元素和下一个元素组成子数组
    result.append([a[i], a[i+1]])
print(result)

这种写法逻辑直白,先初始化空列表,再逐个添加符合要求的子数组,容易跟踪每一步的变化。

扩展:生成更长的窗口

如果之后需要生成每个子数组包含3个元素(比如[[1,2,3], [2,3,4], ...]),只要调整切片长度和遍历范围就行,比如:

result = [a[i:i+3] for i in range(len(a)-2)]

原理和上面完全一致,只要保证窗口长度不超过剩余元素数量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:16:17