Nea*_*roo -10 python performance for-loop if-statement
在我的项目中,重要的是要知道
for i in a_list:
if i == "foo":
do stuff
break
Run Code Online (Sandbox Code Playgroud)
比以下速度慢得多:
if "foo" in a_list:
do stuff
Run Code Online (Sandbox Code Playgroud)
是吗?
首先,最好通过实际测量代码来回答任何性能问题。使用timeit或事件探查器查看哪个选项更快。
其次,在您的两个代码示例中,if会更快,因为它们正在执行相同的工作,但是在if中,工作是在C中完成的,而在for中,它是在Python中完成的。(假设您将中断添加到循环版本中以在找到该元素时停止)。
第三,如果您担心速度,也许根本就不需要列表,而是列表。要在列表中查找元素,必须依次检查每个元素,这是一个O(n)操作(如果列表长度加倍,则操作时间将加倍)。在一个集合中,它是O(1),无论集合变得多大,找到一个元素所花费的时间都是相同的。
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |