python - 如何在其他列表中进行比较和插入的高效循环

标签 python django list loops

我正在开发一个处理大型数据库的 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/

相关文章:

django - 更新 Django 表单上的 forms.FileField

javascript - Django Link 在 for 循环中不起作用

Python 元组操作

python - 根据元组列表(值、索引)创建列表

arrays - 将数组映射到 kotlin 对象列表

python - 在 django 模板中显示外键值

python - 如何在Web应用程序中读取数字证书? (灯)

python - 对时间戳数组使用互相关有意义吗?

python - 列重新编号 Pandas Dataframe

ios - 创建使用 XIB 文件的 Storyboard