如何基于词表中各元素长度对字符串进行滑动窗口拆分
基于词表元素长度的滑动窗口拆分实现
核心逻辑说明
此处的拆分逻辑为:将词表每个元素按空格拆分后的单元数量作为滑动窗口大小,对目标字符串拆分后的单元列表执行步长为1的滑动截取,再将每个窗口的单元拼接为空格分隔的字符串。
完整实现代码
# 输入参数 list_of_words = ["1 2", "1 2 3", "1 2 3 4"] target_str = "1 2 3 4" # 先将目标字符串拆分为基础单元列表 target_units = target_str.split() target_len = len(target_units) for word in list_of_words: # 计算当前词表元素对应的窗口大小:按空格拆分后的单元数 win_size = len(word.split()) # 计算滑动窗口可截取的最大起始索引 max_start = target_len - win_size if max_start < 0: # 窗口大小超过目标字符串长度,无有效分片 res = [] else: # 滑动截取并拼接 res = [] for start in range(max_start + 1): window_units = target_units[start:start+win_size] # 若需要每个分片单独包裹在列表中,改为 res.append([" ".join(window_units)]) 即可 res.append(" ".join(window_units)) # 输出结果 print(f'对应词表元素为"{word}"时,输出结果为:{[item for item in res]}')
运行输出结果
对应词表元素为"1 2"时,输出结果为:['1 2', '2 3', '3 4'] 对应词表元素为"1 2 3"时,输出结果为:['1 2 3', '2 3 4'] 对应词表元素为"1 2 3 4"时,输出结果为:['1 2 3 4']
内容的提问来源于stack exchange,提问作者user15887962
相关产品推荐
相关产品推荐

