【发布时间】:2021-09-26 04:39:13
【问题描述】:
我有以下嵌套循环:
for i in range(len(prices)):
for j in allCats:
if prices[i] == 1.0 and j in categories[i]:
prices[i] = allCats[j][1]
如何重构它以提高时间复杂度/性能?
编辑:价格是浮点值列表,类别是字符串列表,allCats 是列表字典。
【问题讨论】:
-
制作
categories[i]一个集合。这将大大缩短搜索时间。我不认为你可以改进其他任何东西。 -
也许看看多线程,您可以在单独的线程中运行循环的多次迭代。允许迭代同时执行
-
您可能可以让内部循环通过
categories[i],我猜它比 allCats 短。但是如果不看数据结构就很难准确地说出。 -
请注意,您的帖子会保留编辑历史记录,因此您无需写“编辑”,而是可以根据需要编辑您的帖子。但是,请尝试提供minimal reproducible example,因为描述您的变量是什么含糊不清。尝试编辑您的代码块,使其显示
prices = [...],等等... -
javaMan 你确定要使用
j in categories[i]而不是j == categories[i]?在您的代码中,如果j是 'apple' 而categories[i]是 'pineapple',价格将被更新(假设价格等于 1.0)
标签: python performance nested-for-loop