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

如何从单个原始列表生成多个带交集的子列表?求切片/循环实现方法

生成带交集的滑动子列表实现方案

嘿,这个需求本质上就是根据指定窗口大小(由list_b的长度确定)生成滑动窗口子列表,每个相邻子列表之间保留交集。我给你两种实用的实现方式:

方法一:for循环+切片操作

先确定窗口大小为list_b的长度,然后通过循环遍历起始索引,每次用切片截取对应长度的子列表,添加到结果列表中即可:

list_a = [5, 2, 30, 6, 17]
list_b = [40, 90]
# 获取窗口大小
window_size = len(list_b)

result = []
# 循环的起始索引范围是0到 len(list_a)-window_size(包含)
for i in range(len(list_a) - window_size + 1):
    # 切片截取从i开始的window_size个元素
    sub_list = list_a[i:i+window_size]
    result.append(sub_list)

print(result)  # 输出: [[5, 2], [2, 30], [30, 6], [6, 17]]

方法二:列表推导式(更简洁)

如果想让代码更紧凑,可以用Python的列表推导式一步完成,逻辑和上面的循环完全一致:

list_a = [5, 2, 30, 6, 17]
list_b = [40, 90]
window_size = len(list_b)

# 一行代码生成结果
result = [list_a[i:i+window_size] for i in range(len(list_a) - window_size + 1)]

print(result)  # 输出同样符合需求

补充说明

这里的关键是循环的索引范围:range(len(list_a) - window_size + 1)。因为当起始索引为len(list_a)-window_size时,切片list_a[i:i+window_size]刚好能取到list_a的最后window_size个元素,不会出现索引越界的问题,同时保证了所有相邻子列表都有window_size-1个元素的交集,完全匹配你要的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:21:01