擅长:python、mysql、java
<p>首先,这里的<code>while</code>循环是错误的选择,将<code>split</code><em>放在</em>内部似乎很可笑。你知道吗</p>
<p>第二,如果<code>list123</code>中的任何项的部分少于两部分,则不希望<code>replace</code>所有的项;只在迭代每个索引<code>i</code>时修改<code>list123[i]</code>。你知道吗</p>
<p>第三,要只删除最后的<code>'abc'</code>,可以使用<code>str.rsplit</code>并指定最多一个拆分,然后<code>str.join</code>与<code>'q'</code>一起返回。你知道吗</p>
<p>这要整洁得多:</p>
<pre><code>dummylist = [len(r.split('abc')) for r in list123]
for i, n in enumerate(dummylist):
if n <= 2:
list123[i] = list123[i].replace('abc', 'q')
else:
list123[i] = 'q'.join(list123[i].rsplit('abc', 1))
</code></pre>
<p>这给了我<code>list123 == ['habcuxabc929q', 'tq', 'q', 'jabcuq9']</code>。你知道吗</p>