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)
关于如何优化速度的任何想法?
做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)
归档时间: |
|
查看次数: |
70 次 |
最近记录: |