python - 我们是否应该总是用列表理解替换 for 循环
问题描述
我的问题就像标题一样。
- 我们是否应该总是尝试用 list/dict 理解替换 for 循环,因为后者执行得更快?
我正在编写这个项目,它需要多次迭代一些庞大的元组列表,而且它需要很长时间。所以我现在正在努力优化我的代码。我需要遍历元组列表的主要原因是,假设我有一个值,我想知道它是否在列表中,以及同一个元组中的另一个值是什么。
- 将这些列表转换为数组或字典会有所帮助吗?
任何输入将不胜感激。提前致谢。
解决方案
使用字典而不是元组列表会更有效 - 通常,从字典中获取给定键的值是 O(1) (恒定速度,无论字典有多大),同时进行通过整个列表搜索元组是 O(n) (这意味着效率随着列表的增长而下降)。
列表推导而不是 for 循环应该不会有很大的不同,除了在列表推导中您实际上是在构建一个列表这一事实 - 因此,如果您正在经历的循环非常大,您可能会遇到内存问题。
听起来你应该在这种情况下有一个字典 - 顺便说一句 - 将元组列表转换为字典,只需执行以下操作:
dict(list_of_tuples)
推荐阅读
- javascript - 分组对象数组/将对象正确添加到数组中 - JS
- output - 一次输出数组的每个元素的传统方法是什么?
- git - 在 Git 中创建别名的正确方法是什么?
- python - 如何查看列表是否包含与 python 中的另一个列表共有的对象?
- asp.net-mvc-4 - 索引数据库循环遍历表数据并将其发送到服务器
- email - 添加转发过滤器时未验证电子邮件地址 (AWS SES)
- php - 如何在 Laravel 中编辑和更新复选框值?
- javascript - 如何在卡片中模拟 Airbnb 风格的滑块?
- spring - Spring Junit 测试中的模拟类变量显示 Null
- windows - 在 Word 女士中导出 pdf 后的空白页