擅长:python、mysql、java
<p>你现在的方向很好。这里根本不需要索引!您正在使用<code>any(sub in str for sub in dupes)</code>来检查字符串中是否有任何重复的模式是正确的。您只需要一个小的逻辑细化</p>
<p>当上述条件为真时,会发生什么情况?您想添加<code>"duplicate"</code>字符串。如果不是真的会发生什么?按原样添加原始字符串。因此,只需将列表修改为:</p>
<pre class="lang-py prettyprint-override"><code>def Filter(clipb, dupes):
return [s + " duplicate" if any(sub in s for sub in dupes)
else s
for s in clipb]
</code></pre>
<p><sup>*注意,我更改了<code>str</code>变量的名称,因为<code>str</code>是内置类型的名称。</sup></p>
<p>样本数据的输出为:</p>
<pre class="lang-none prettyprint-override"><code>found dupicates from the original list are:
['ABC2b_0243D_K6_LOPA-PAST duplicate', 'ABC2b_0016G_M1_LOPA-PABR', 'ABC2b_0138H_M1_LOBR-BRMU duplicate', 'ABC2b_0138G_J1_LOPA-PAST duplicate', 'ABC2b_0243A_O§_STMA-MACV duplicate']
</code></pre>
<hr/>
<p>如果要将原始列表更改到位,可以使用内置的<a href="https://docs.python.org/3/library/functions.html#enumerate" rel="nofollow noreferrer">^{<cd5>}</a>函数迭代索引和项:</p>
<pre class="lang-py prettyprint-override"><code>for i, s in enumerate(clipb):
if any(sub in s for sub in dupes):
clipb[i] = s + " duplicate"
</code></pre>