Python` for循环中`in`的形式解释

时间:2013-08-15 03:43:53

标签: python for-loop

我知道in运算符可以在Python中用作以下内容的简写(一般来说,不考虑任何隐藏的平等问题或任何内容):

for item in list1:
    if item == thingToCheck:
        return True
return False

但是,我想知道实际in行中for item in list1的技术含义 - 显然in还有其他含义,因为Python不会产生每一个可能的值item的{​​{1}}并查看item in list1。在相关的说明中,Python for循环是否在没有in

的情况下进行

2 个答案:

答案 0 :(得分:4)

in调用__contains__方法(在这种情况下为list

对于listtuple,这是线性搜索

对于dictset,它使用哈希

在for循环中使用时,in只意味着从迭代中获取下一个项目,直到它用完为止。

你可以想象它就像这样

it = iter(list1)
while True:
    try:
        item = next(it)
    except StopIteration:
        break
    if item == thingToCheck:
        return True
return False 

答案 1 :(得分:2)

不,如果没有for,您将找不到in循环,因为它在语法上是必需的,请参阅Python language reference。正如Greg指出的那样,使用相同关键字的事实并不意味着内部处理类似,更不用说相同了。类似的是关于编程语言的永不枯竭的讨论,其中=具有赋值和比较运算符两个角色。编程语言的目的是为了提高可读性,并从实际发生的事情中抽象出来,抽象方法随着语言的水平而提高。