擅长:python、mysql、java
<p>您可以使用<code>more-itertools</code>包来实现这一点。您需要在<code>l</code>的每个元素中检查<code>len(sl[i])</code>的每个子序列。这将是缓慢的,但可行的</p>
<p>我还创建了一个使用<code>partial</code>的工厂函数,这样您就可以随意插入<code>sl</code>的内容。这与<code>filter</code>的使用保持一致</p>
<pre class="lang-py prettyprint-override"><code>from more_itertools import windowed
from functools import partial
def ordered_check(x, sub):
s = tuple(sub)
for y in windowed(x, len(sub)):
if s == y:
return True
return False
def ordered_check_all(x, subs):
return all(ordered_check(x, sub) for sub in subs)
def check_factory(subs):
return partial(ordered_check_all, subs=subs)
list(filter(check_factory(sl), l))
# returns
[['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23'],
['s1', 's5', 's6', 's10', 's14', 's15', 's23']]
</code></pre>