1

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

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

但是,我想知道in 实际行中的技术含义for item in list1- 显然还有另一个含义 to in,因为 Python 不会生成每个可能的值item并查看 if item in list1。在相关的说明中,Pythonfor循环是否曾经没有in?

4

2 回答 2

4

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

因为listtuple是线性搜索

Fordict并且set它使用哈希

在 for 循环中使用时,in仅表示从可迭代对象中取出下一个项目,直到它用完。

你可以想象它是这样的

it = iter(list1)
while True:
    try:
        item = next(it)
    except StopIteration:
        break
    if item == thingToCheck:
        return True
return False 
于 2013-08-15T03:48:23.813 回答
2

不,你不会找到没有 的for循环in,因为它在语法上是必要的,请参阅Python 语言参考。正如 Greg 指出的那样,使用相同的关键字这一事实并不意味着内部处理是相似的,更不用说相同了。类似的是关于编程语言的永不消逝的讨论,其中=具有赋值和比较运算符两个角色。编程语言旨在提高可读性并从实际发生的事情中抽象出来,并且抽象随着语言的级别而增加。

于 2013-08-15T07:50:20.187 回答