<p>我需要检查文件名列表是否可以被复制,并将其与fobidden子字符串列表进行比较。你知道吗</p>
<p>以下是我所拥有的:</p>
<pre><code>exclude = ['ex','xe']
files = ['include', 'exclude']
</code></pre>
<p>这就是我所期望的:</p>
<pre><code>['include']
</code></pre>
<p>我已经用列表理解了,比如:</p>
<pre><code>[a[0] for a in [(f, any([e in f for e in exclude])) for f in files] if not a[1]]
</code></pre>
<p>在这里,我创建一个元组<code>(f, any([e in f for e in exclude]))</code>,检查文件名与排除子字符串是否有对应关系。
我对文件列表<code>for f in files</code>中的每个文件都这样做,并且只包括排除子字符串<code>if not a[1]</code>中不存在的文件。你知道吗</p>
<p>有更好的方法吗?一个更像Python的?
因为我在文件列表中循环了两次,我猜有一种方法可以一次性完成!你知道吗</p>
<p>谢谢你!你知道吗</p>
<p>这只会在文件列表中循环一次:</p>
<pre><code>[file for file in files if not any(item in file for item in exclude)]
</code></pre>
<p>对于文件列表中的每个项,它都会在排除列表中循环一次,因此如果排除列表很长,性能可能会受到影响。你知道吗</p>