Python的in关键字是不是循环语句?执行时会遍历列表返回布尔值吗?
numbers = [1, 2, 3, 4, 5] if 4 in numbers: print("True") else: print("False")
问题1解答:Python中的in语句是否属于循环语句?
- 不属于。Python官方定义的循环语句只有
for和while两类,in本质是成员运算符,作用是判断左侧元素是否存在于右侧的容器对象中,和算数运算符、比较运算符属于同一类语法元素,不属于流程控制类的循环语句。 - 补充说明:我们平时写
for i in xxx时用到的in只是for循环语法的固定组成部分,本身不具备循环功能,单独使用的in和循环完全无关。
问题2解答:上述代码执行in相关逻辑时,是否会遍历numbers列表来返回对应的布尔值结果?
- 会遍历。因为列表(list)是线性存储的序列类型,没有内置哈希索引结构,执行成员判断时必须从第一个元素开始逐个和目标值比对,找到匹配项就立即返回
True,遍历完所有元素都没匹配就返回False,时间复杂度为O(n)。 - 补充说明:如果是对集合(set)或者字典(dict)的key做
in判断,就不会遍历,这类结构用哈希表存储,成员判断的时间复杂度是O(1),直接通过哈希值定位即可。
内容的提问来源于stack exchange,提问作者crlav
相关产品推荐
相关产品推荐

