我知道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
?
答案 0 :(得分:4)
in
调用__contains__
方法(在这种情况下为list
)
对于list
和tuple
,这是线性搜索
对于dict
和set
,它使用哈希
在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指出的那样,使用相同关键字的事实并不意味着内部处理类似,更不用说相同了。类似的是关于编程语言的永不枯竭的讨论,其中=
具有赋值和比较运算符两个角色。编程语言的目的是为了提高可读性,并从实际发生的事情中抽象出来,抽象方法随着语言的水平而提高。