擅长:python、mysql、java
<p>要测试列表中任何字符串中是否存在子字符串,可以使用<a href="https://docs.python.org/2/library/functions.html#any" rel="nofollow noreferrer">any</a>:</p>
<pre><code>>>> li = ['potatoechips','icecream','donuts']
>>> s="potatoe"
>>> any(s in e for e in li)
True
>>> s="not in li"
>>> any(s in e for e in li)
False
</code></pre>
<p>优点是<code>any</code>会在第一个<code>True</code>中断,如果列表很长,效率会更高。你知道吗</p>
<p>也可以将列表合并为一个由分隔符分隔的字符串:</p>
<pre><code>>>> s in '|'.join(li)
True
</code></pre>
<p>这里的优势是如果你有很多测试。<code>in</code>例如,数百万次的测试比构建数百万次的理解要快。你知道吗</p>
<p>如果您想知道哪个字符串有正数,可以使用列表理解和列表中字符串的索引:</p>
<pre><code>>>> li = ['potatoechips','icecream','donuts', 'potatoehash']
>>> s="potatoe"
>>> [(i,e) for i, e in enumerate(li) if s in e]
[(0, 'potatoechips'), (3, 'potatoehash')]
</code></pre>
<p>或者,您可以使用<code>filter</code>,如果您只是希望字符串作为替代:</p>
<pre><code>>>> filter(lambda e: s in e, li)
['potatoechips', 'potatoehash']
</code></pre>