擅长:python、mysql、java
<p>你可以从这样开始:</p>
<pre><code>set(lst1).issubset(lst2)
</code></pre>
<p>查看lst1是否包含在lst2忽略顺序中。如果一个列表包含在另一个列表中,则可以执行以下操作:</p>
<pre><code>ii = lst2.index(lst1[0])
if lst2[ii:ii+len(lst1)] == lst1:
return True
else:
return False
</code></pre>
<p>最初我声明第一次检查与第二次检查无关,但是如果lst1的第一个元素不在lst2中,则必须正确处理<code>ValueError</code>。</p>
<p><strong>编辑:</strong>
顺便说一句,我比较了我的代码版本和yan的代码版本,在几乎所有的用例下,我的代码版本都要快得多,特别是如果len(lst1)更大(比yan的实现速度高出200倍)。尝试使用<code>timeit</code>模块。</p>
<pre><code>def check(lst1,lst2):
try:
ii = lst2.index(lst1[0])
except ValueError:
return False
if lst2[ii:ii+len(lst1)] == lst1:
return True
else:
return False
</code></pre>
<p>为了解释它是如何工作的,<code>ii = lst2.index(lst1[0])</code>在<code>lst2</code>中找到与<code>lst1</code>的第一个元素匹配的索引。如果<code>lst2</code>中缺少该项,它将捕获<code>ValueError</code>,并返回<code>False</code>。如果该元素确实存在,<code>lst2[ii:ii+len(lst1)] == lst1</code>将所有<code>lst1</code>与从匹配元素开始并获取下一个<code>len(lst)</code>元素的<code>lst2</code>子列表进行比较。</p>