首页 > 解决方案 > 我们是否应该总是用列表理解替换 for 循环

问题描述

我的问题就像标题一样。

  1. 我们是否应该总是尝试用 list/dict 理解替换 for 循环,因为后者执行得更快?

我正在编写这个项目,它需要多次迭代一些庞大的元组列表,而且它需要很长时间。所以我现在正在努力优化我的代码。我需要遍历元组列表的主要原因是,假设我有一个值,我想知道它是否在列表中,以及同一个元组中的另一个值是什么。

  1. 将这些列表转换为数组或字典会有所帮助吗?

任何输入将不胜感激。提前致谢。

标签: pythonfor-loopgeneratorlist-comprehension

解决方案


使用字典而不是元组列表会更有效 - 通常,从字典中获取给定键的值是 O(1) (恒定速度,无论字典有多大),同时进行通过整个列表搜索元组是 O(n) (这意味着效率随着列表的增长而下降)。

列表推导而不是 for 循环应该不会有很大的不同,除了在列表推导中您实际上是在构建一个列表这一事实 - 因此,如果您正在经历的循环非常大,您可能会遇到内存问题。

听起来你应该在这种情况下有一个字典 - 顺便说一句 - 将元组列表转换为字典,只需执行以下操作:

dict(list_of_tuples)


推荐阅读