我是python新手,有一个问题要问关于代码矢量化

def makeNames2(nList):
  for nLi in nList:
    nLIdx=[i for i,j in enumerate(nList) if j==nLi]
    if nLIdx.__len__()>1:
        for i,j in enumerate(nLIdx):
            if i>0: nList[j]=nList[j]+str(i)
  return nList

执行以下操作:
>>> nLTest=['asda','asda','test','ada','test','yuil','test']
>>> print(makenames2(nLTest)
['asda', 'asda1', 'test', 'ada', 'test1', 'yuil', 'test2']

代码工作得很好,但我想知道是否有方法对for循环进行矢量化?
编辑
谢谢大家给出这三个答案。这正是我感兴趣的,并希望选择所有答案。我不能选择一个以上,但所有的工作。

最佳答案

nLTest, items = ['asda','asda','test','ada','test','yuil','test'], {}
for idx, item in enumerate(nLTest):
    nLTest[idx] += str(items.setdefault(item, 0) or "")
    items[item] += 1
print nLTest

输出
['asda', 'asda1', 'test', 'ada', 'test1', 'yuil', 'test2']

10-06 15:50