首页 > 解决方案 > for 循环内的 for 循环运行时间过长

问题描述

这是运行时间过长的代码我想在每次重复驱动程序名称时增加访问次数

df['visites']=1
for i in range(len(df['CHAUFFEUR'])-1):
    for j in range (i,len(df['CHAUFFEUR'])-1):
        if df['CHAUFFEUR'][j] == df['CHAUFFEUR'][i]:
            df['visites'][i]+=1

标签: python-3.x

解决方案


这是一个解决方案,您可以“记住”您已经看到的人并跳过:

chauffeur = df['CHAUFFEUR']
# Save length in advance (it is used a few times)
length = len(chauffeur)

# Fill visits dictionary with default values for each chauffeur
visits = {}
for c in chauffeur:
    visits[c] = 0

for i in range(length):
    # If we saw this chauffeur, skip
    if visits[chauffeur[i]]:
        continue
    for j in range(i, length):
        if chauffeur[j] == chauffeur[i]:
            visits[chauffeur[i]] += 1
            df['visites'][j] = visits[chauffeur[i]]

推荐阅读