似乎有很多与嵌套 for 循环的速度有关的问题和答案——我想我看了每一个!但不幸的是,我仍然不确定为什么我的代码很慢。希望能得到各位好心人的指导。
我每天下载一个包含约 116,000 个条目的 csv 文件。项目在文件中不一致的点被添加和删除,所以每天我都想看看添加了什么,删除了什么。
对于旧列表和新列表,将条目从 csv 获取到列表完全不需要时间,但是我在代码的下一部分遇到了很大的速度下降,尽管最后,它做了我想要的并吐出区别 - 添加的项目和删除的项目。
列表中的 116,000 个项目中的每一个都是一个字典,如下所示:
old or new = [{'Date Stamped': '', 'Name': '', 'Registration Number': '', 'Type': '', "Form Name': '', 'URL': "}]
当我到达这一点时:
added = [i for i in new if not i in old]
removed = [i for i in old if not i in new]
完成需要25分钟!我觉得这很长一段时间,但我可能并不完全理解我在做什么。
每个列表(旧的和新的)都有约 116000 个项目。那是因为我必须迭代约 116,000 个项目 4 次吗?
最后,它做了我想做的事,但它的工作似乎非常缓慢;也就是说,这真的是我第一次使用包含这么多项目的数据集,所以也许这是理所当然的。
因为它是嵌套的 for 循环,所以这很慢吗?是因为尺寸慢吗?我绝对是一个业余爱好者,非常感谢大家的帮助。非常感谢。