我正在开发一个处理大型数据库的 Web 应用程序 (Python/Django),我需要优化此循环以获得更好的执行时间。
我有一个条目列表,每个条目都有一个 yes_count 属性、一个 no_count 属性和一个 tid 属性。
我需要根据比率创建两个新列表 = yes_count/(yes_count + no_count)
使用内置函数是否是更好的方法(或更快的方法)?
yes_entries = []
no_entries = []
for e in entries:
if e.tid in tids:
if e.yes_count > 0 or e.no_count > 0:
ratio = e.yes_count / (e.yes_count + e.no_count)
if ratio > 0.75:
yes_entries.append(e.tid)
elif ratio < 0.25:
no_entries.append(e.tid)
最佳答案
我建议将 tids
设为 O(1) 分摊查找速度的集合(相对于列表的 O(N)):
set_tids = set(tids)
在 for
循环之前,然后
if e.tid in set_tids
否则你给出的其余代码看起来非常优化
关于python - 如何在其他列表中进行比较和插入的高效循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736962/