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

如何将列表转换为指定长度的滑动窗口元组?

滑动窗口生成指定长度元组的解决方案

嘿,这问题我熟!要实现这种滑动窗口式的元组生成,还得处理最后一个窗口补空字符串的需求,用Python可以轻松搞定,我给你两种实现方式:

方式一:清晰的循环写法

这种写法步骤明确,容易理解,适合刚接触滑动窗口逻辑的朋友:

# 定义你的变量
lgt = 3
my_list = ['Tout', 'le', 'monde', 'aime', 'le', 'chocolat', 'Le', 'est', 'une', 'source', 'agent', 'securité', 'chocolat', 'magnesium']

# 初始化结果列表
sliding_tuples = []

# 遍历每个起始索引
for i in range(len(my_list)):
    # 截取当前窗口的元素
    current_window = my_list[i:i+lgt]
    # 如果窗口长度不足lgt,补全空字符串
    current_window += [''] * (lgt - len(current_window))
    # 转成元组并加入结果
    sliding_tuples.append(tuple(current_window))

# 打印验证结果
for tpl in sliding_tuples:
    print(tpl)

方式二:简洁的列表推导式

如果喜欢更紧凑的代码,用列表推导式一行就能搞定:

lgt = 3
my_list = ['Tout', 'le', 'monde', 'aime', 'le', 'chocolat', 'Le', 'est', 'une', 'source', 'agent', 'securité', 'chocolat', 'magnesium']

sliding_tuples = [
    tuple(my_list[i:i+lgt] + ['']*(lgt - len(my_list[i:i+lgt]))) 
    for i in range(len(my_list))
]

# 输出结果
for tpl in sliding_tuples:
    print(tpl)

逻辑解释

  • 我们遍历原列表的每个索引作为窗口起始点,这样能覆盖从第一个元素到最后一个元素开头的所有窗口场景
  • 用切片my_list[i:i+lgt]获取当前窗口元素,当到达列表末尾时,切片会自动截断,此时窗口长度会小于lgt
  • 用[''] * (lgt - len(current_window))生成对应数量的空字符串,拼接到窗口末尾,保证每个元组的长度都是lgt
  • 最后把补全后的列表转成元组,就得到了你要的滑动窗口元组序列

运行代码后,输出结果和你给出的示例完全一致哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:58:25