'for'vs.'in'-哪个更快?

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)

是吗?

Ned*_*der 5

首先,最好通过实际测量代码来回答任何性能问题。使用timeit或事件探查器查看哪个选项更快。

其次,在您的两个代码示例中,if会更快,因为它们正在执行相同的工作,但是在if中,工作是在C中完成的,而在for中,它是在Python中完成的。(假设您将中断添加到循环版本中以在找到该元素时停止)。

第三,如果您担心速度,也许根本就不需要列表,而是列表。要在列表中查找元素,必须依次检查每个元素,这是一个O(n)操作(如果列表长度加倍,则操作时间将加倍)。在一个集合中,它是O(1),无论集合变得多大,找到一个元素所花费的时间都是相同的。