<p>您可以使用<code>all</code>和<code>any</code>来测试您的条件:</p>
<pre><code>must_have_list = ['APPLE SSD', 'APPLE HDD']
examples=[[u'APPLE SSD SM128E', u'APPLE HDD HTS541010A9E662'],
[u'APPLE SSD SD0128F', u'APPLE HDD ST3000DM001'],
[u'APPLE HDD HTS541010A9E662', u'APPLE HDD HTS541010A9E662', u'APPLE SSD SM128E'],
[u'APPLE SSD SM128E'],
[u'APPLE SSD SM128E',u'APPLE SSD SM128E']]
for ex in examples:
print ex, all(any(r in s for s in ex) for r in must_have_list)
</code></pre>
<p>印刷品:</p>
<pre><code>[u'APPLE SSD SM128E', u'APPLE HDD HTS541010A9E662'] True
[u'APPLE SSD SD0128F', u'APPLE HDD ST3000DM001'] True
[u'APPLE HDD HTS541010A9E662', u'APPLE HDD HTS541010A9E662', u'APPLE SSD SM128E'] True
[u'APPLE SSD SM128E'] False
[u'APPLE SSD SM128E', u'APPLE SSD SM128E'] False
</code></pre>
<p>可与列表理解一起使用,以生成符合条件的列表:</p>
<pre><code>>>> [ex for ex in examples if all(any(r in s for s in ex) for r in must_have_list)]
[[u'APPLE SSD SM128E', u'APPLE HDD HTS541010A9E662'], [u'APPLE SSD SD0128F', u'APPLE HDD ST3000DM001'], [u'APPLE HDD HTS541010A9E662', u'APPLE HDD HTS541010A9E662', u'APPLE SSD SM128E']]
</code></pre>
<p>在这种情况下不需要regex,但是如果测试每个字符串都需要regex,则可以使用<code>re.search</code>而不是<code>in</code>。你知道吗</p>
<p>例如,假设您想知道被测试的子字符串是独立的,而不是另一个单词的一部分,比如<code>SSDHYBRID</code>:</p>
<pre><code>for ex in examples:
print ex, all(any(re.search(r'\b{}\b'.format(r), s) for s in ex) for r in must_have_list)
# same output...
</code></pre>