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

Python:ListA滑动窗口递增序列与静态ListB的组合生成问题

解决方案

核心思路

先生成ListA的所有连续递增滑动窗口子序列(即长度从1到ListA总长度的连续元素组),再将每个子序列与ListB的元素做笛卡尔积组合。

代码实现

import itertools

def generate_sliding_combinations(list_a, list_b):
    # 生成ListA的所有连续子序列
    sliding_subsequences = []
    n = len(list_a)
    # 遍历子序列长度:1到n
    for length in range(1, n+1):
        # 遍历起始索引,确保子序列不越界
        for start in range(n - length + 1):
            subsequence = list_a[start:start+length]
            sliding_subsequences.append(subsequence)
    # 将每个子序列与ListB元素做笛卡尔积
    result = list(itertools.product(sliding_subsequences, list_b))
    return result

# 测试示例
ListA = ["Val1", "Val2", "Val3"]
ListB = [0, 1]
output = generate_sliding_combinations(ListA, ListB)
for item in output:
    print(item)

输出结果

运行后会得到你需要的所有组合:

(['Val1'], 0)
(['Val1'], 1)
(['Val2'], 0)
(['Val2'], 1)
(['Val3'], 0)
(['Val3'], 1)
(['Val1', 'Val2'], 0)
(['Val1', 'Val2'], 1)
(['Val2', 'Val3'], 0)
(['Val2', 'Val3'], 1)
(['Val1', 'Val2', 'Val3'], 0)
(['Val1', 'Val2', 'Val3'], 1)

为什么之前的方法不行?

  • itertools.combinations是从ListA中选取任意位置的元素组合(比如会出现('Val1','Val3')这种非连续的组合),不符合你需要的**递增滑动窗口(连续元素)**要求。
  • 单独用itertools.product只能处理两个列表的直接笛卡尔积,没法先筛选出ListA的连续子序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:00:57