Python构造指定步长窗口的滑动元组并映射到预定义字典索引的方法
实现方案
1. 修复滑动元组生成逻辑
你原有代码的问题在于range的范围和步长设置错误,正确逻辑要保证每个窗口的起始索引i满足i + 窗口大小k ≤ 列表总长度,同时步长设置为2。修复后可以用更简洁的切片写法实现,不需要手动逐个取索引:
k = 4 d = 2 # 自动过滤所有长度不足k的窗口 movingTuple = [tuple(source[i:i+k]) for i in range(0, len(source) - k + 1, d)]
2. 完整实现需求的全量代码
直接遍历合法滑动元组,从target字典中取值即可得到最终的索引列表:
import itertools # 初始化target映射字典 target = list(itertools.product(['a','b','c','d'], repeat=4)) target = {item: idx for idx, item in enumerate(target)} source = ['a','b','b','d','a','b','d','c','a','d','b','a','d','c','a'] k = 4 d = 2 # 生成合法滑动元组 moving_tuple = [tuple(source[i:i+k]) for i in range(0, len(source) - k + 1, d)] # 匹配得到索引列表 result = [target[t] for t in moving_tuple] print(moving_tuple) print(result)
运行后首先会输出符合要求的滑动元组列表,然后输出对应的索引列表。
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

