我是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
执行以下操作:
^{pr2}$代码运行得很好,但是我想知道是否有一种方法可以将for
循环矢量化?在
编辑
谢谢大家的三个答案。这正是我感兴趣的,我想选择所有的答案。我不能多选一个,但所有的都有效。在
输出
^{pr2}$你可以简化一下:
这将删除在
O(n)
中操作的for
循环之一(字典访问是O(1)
)。在注意,这会修改列表;您可能希望使用一个新的
output
列表改为append
。您还可以使用defaultdict
或Counter
模块中的defaultdict
稍微简化这一点。在这可能更具可读性,避免了
O(n^2)
。也不到位。在相关问题 更多 >
编程相关推荐