我的问题和标题一样。
我正在编写此项目,该项目需要多次遍历一些庞大的元组列表,并且要花很长时间。因此,我现在正在努力优化代码。我需要遍历元组列表的主要原因是,假设我有一个值,我想知道它是否在列表中,以及同一元组中的其他值是什么。
任何输入将不胜感激。提前致谢。
答案 0 :(得分:5)
使用字典而不是元组列表会更加高效-通常,从字典中为给定键获取值是O(1)(恒定速度,字典的大小无关紧要) ,在遍历整个列表时,搜索元组为O(n)(这意味着效率随着列表的增长而降低)。
列表理解而不是for循环应该没什么大不同,除了在列表理解中您实际上是在构建列表这一事实之外,因此,如果经历的循环很大,则可能会遇到内存问题
在这种情况下,听起来您应该有一个字典-btw-将元组列表转换为字典,只需执行以下操作即可:
dict(list_of_tuples)
答案 1 :(得分:0)
正如@maor所建议的,您描述的类型是字典(O(1)查找),所以我只回答您的另一个问题:否。
列表(或任何)推导应该用于从现有可迭代对象创建一个可迭代对象,该映射具有相对简单的逻辑。这并不是要在每个地方替换循环,对于依赖循环的繁琐逻辑,您不应费劲地将其转变为理解力。
如果是您第一次看到它们,它们很酷,但请注意不要在不必要时落入过度使用的陷阱。