Python成员运算符in和not in用于判断值是否在序列中,返回布尔值;in对字典只检查键,性能上集合/字典为O(1),列表/元组为O(n),需注意大小写、None及嵌套结构等常见误区。

Python成员运算符 in 和 not in 用于判断某个值是否存在于序列(如列表、元组、字符串、字典等)中,返回布尔值 True 或 False。它们简洁高效,是日常编码中高频使用的操作符,但用法细节和常见误区值得深挖。
in 与 not in 的基本行为
两者都是二元运算符,左边是待查元素,右边是容器对象。Python 会调用容器的 __contains__ 方法(如果定义了),否则回退为逐项比较(如列表)或哈希查找(如字典、集合)。
-
'a' in 'abc'→True(字符串支持子串判断) -
3 in [1, 2, 3, 4]→True -
'key' in {'key': 10}→True(检查键,不是值) -
10 in {'key': 10}→False(值不参与in判断) -
5 not in (1, 2, 3)→True
在字典中使用 in 的关键点
对字典使用 in 默认只检查键(key),这是最常被误解的地方。若需检查值或键值对,必须显式调用对应视图:
-
'name' in user_dict✅ 检查键是否存在 -
'Alice' in user_dict.values()✅ 检查值是否存在 -
('name', 'Alice') in user_dict.items()✅ 检查键值对是否存在 -
'Alice' in user_dict❌ 不会自动搜索值,结果恒为False(除非键名恰好叫 'Alice')
性能差异:不同容器类型的影响
成员判断效率取决于底层实现:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~