擅长:python、mysql、java
<p>你可以简化一下:</p>
<pre><code>def makenames(lst):
seen = {}
for index, name in enumerate(lst):
if name in seen:
seen[name] += 1
lst[index] = "{0}{1}".format(name, seen[name])
else:
seen[name] = 0
return lst
</code></pre>
<p>这将删除在<code>O(n)</code>中操作的<code>for</code>循环之一(字典访问是<code>O(1)</code>)。在</p>
<p>注意,这会修改列表;您可能希望使用一个新的<code>output</code>列表改为<code>append</code>。您还可以使用<code>defaultdict</code>或<code>Counter</code>模块中的<code>defaultdict</code>稍微简化这一点。在</p>