句子字符串上的Python滑动窗口


问题内容

我正在寻找由窗口大小N的单词组成的字符串的滑动窗口拆分器。

输入 :“我喜欢食物,喜欢喝酒”,窗口大小3

输出 :[“我喜欢食物”,“喜欢食物和”,“喜欢食物”,“喜欢” …]

窗口滑动的所有建议都围绕字符串的顺序,没有术语。开箱即用吗?


问题答案:

您可以使用具有不同偏移量的迭代器并压缩所有偏移量。

>>> arr = "I love food. blah blah".split()
>>> its = [iter(arr), iter(arr[1:]), iter(arr[2:])] #Construct the pattern for longer windowss
>>> zip(*its)
[('I', 'love', 'food.'), ('love', 'food.', 'blah'), ('food.', 'blah', 'blah')]

izip如果句子很长,或者是普通的旧循环(如在其他答案中),则可能要使用。