【发布时间】:2021-04-22 08:43:00
【问题描述】:
这个交集二维数组表示景区A出现时景区B也出现的次数。现在这段代码需要大约 1 分 30 秒才能得到结果。是否有可能在 10 秒内得到这段代码的结果?
for a in range ((len(user_record[0]))):#len(user_record[0]) is 1136
b = 0
for b in range ((len(user_record[0]))): #len(user_record[0]) is 1136
c = 0
Intersection[a][b] = 0
for c in range (len(user_record)): #len(user_record) is 31
Intersection[a][b] = Intersection[a][b] + user_record[c-1][a] * user_record[c-1][b]
【问题讨论】:
-
它在做什么?
-
@Sayse 这是一个二维数组,用于计算每两个旅游景点(两个成对)被所有游客访问的次数。
-
将更多代码移出内部循环体。例如。列表
Intersection[a]在内部b循环中是常量。Intersection[a][b]在内部c循环中是常量。b = 0是多余的。不要在循环中重新评估len(user_record)。 -
哪种说法正确:您的评论
#0~108或len(user_record[0]) = 1136?你能更新你的代码以反映确切的限制吗?请删除误导性的 cmets。 -
@pqans 我改错了 cmets。这是真的:len(user_record[0]) 是 1136,len(user_record) 是 31。
标签: python performance for-loop optimization