我是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']