加速python列表搜索(嵌套for循环)

Hen*_*sen 0 python optimization loops

我正在努力将一些excel工作表转移到python自动化,并且遇到了速度问题.

我有一个列表,其中包含大约10,000个列表,每个列表包含20个左右的列.我还有一个帐号列表(100.000个数字)

我希望迭代我的列表列表,然后从列表中选择值,如果列表中的帐号与帐户列表中的帐号匹配.

通过运行此代码,我可以得到我想要的结果,但是它很慢.

calc = 0
for row in listOfLists:
    if row[1] in Accounts:
        calc += row[8]
Run Code Online (Sandbox Code Playgroud)

关于如何优化速度的任何想法?

sch*_*ggl 7

Accounts一个set.包含检查O(1)用于集合,但O(N)用于列表.您的整个过程的时间复杂度将从减少O(M*N)O(M+N).您可以进一步使用sum条件生成器表达式:

account_set = set(Accounts)
calc = sum(row[8] for row in listOfLists if row[1] in account_set)
Run Code Online (Sandbox Code Playgroud)