是否有内置的Python用于确定迭代是否包含某个序列?

Dav*_*ver 5 python

例如,类似于:

>>> [1, 2, 3].contains_sequence([1, 2])
True
>>> [1, 2, 3].contains_sequence([4])
False
Run Code Online (Sandbox Code Playgroud)

我知道in运算符可以为字符串执行此操作:

>>> "12" in "123"
True
Run Code Online (Sandbox Code Playgroud)

但我正在寻找可以在迭代上运行的东西.

mon*_*kut 4

引用自/sf/answers/477594141/ 修改为使用列表。

from itertools import islice

def window(seq, n=2):
    """
    Returns a sliding window (of width n) over data from the iterable
    s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   
    """
    it = iter(seq)
    result = list(islice(it, n))
    if len(result) == n:
        yield result    
    for elem in it:
        result = result[1:] + [elem]
        yield result

def contains_sequence(all_values, seq):
    return any(seq == current_seq for current_seq in window(all_values, len(seq)))            

test_iterable = [1,2,3]
search_sequence = [1,2]

result = contains_sequence(test_iterable, search_sequence)
Run Code Online (Sandbox Code Playgroud)