我们应该总是用列表理解来替换循环吗?

Cor*_*ter 2 python for-loop list-comprehension generator

我的问题就像标题一样.

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

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

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

任何输入将非常感激.提前致谢.

mao*_*r10 5

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

列表理解而不是for循环不应该产生很大的不同,除了在列表理解中你实际上正在构建一个列表 - 所以如果你正在经历的循环非常大,你可能会遇到内存问题.

听起来你应该在这个场景中有一个字典 - 顺便说一句 - 将一个元组列表转换为一个字典,只需这样做:

dict(list_of_tuples)