Python中in和is关键字详解和使用

在 Python 中,inis 是两个常用但含义不同的关键字,初学者很容易混淆它们的用法。下面是关于它们的详细解释、注意事项及常见示例。


一、关键字 in成员运算符

1. 功能

用于判断某个元素是否存在于序列(如列表、元组、字符串、集合、字典)中

2. 基本语法

python 复制代码
element in container  # 返回 True 或 False

3. 示例

python 复制代码
# 字符串
'a' in 'apple'       # True

# 列表
3 in [1, 2, 3, 4]    # True

# 元组
'x' in ('x', 'y')    # True

# 字典(判断的是"键")
d = {'a': 1, 'b': 2}
'a' in d             # True
1 in d               # False

# 集合
5 in {1, 2, 3, 5}    # True

4. 注意事项

注意点 说明
字典中 in 判断的是键,不是值
in 实际调用的是容器的 __contains__() 方法
可以用于 for x in ... 的迭代语句中

5. 与 not in 结合使用

python 复制代码
if 'x' not in ['a', 'b', 'c']:
    print("x 不在列表中")

二、关键字 is身份运算符

1. 功能

用于判断两个变量是否引用的是同一个对象(即内存地址是否相同)。

2. 基本语法

python 复制代码
a is b     # True if a 和 b 是同一个对象
a is not b # True if a 和 b 是不同对象

3. 示例

python 复制代码
a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(a is b)  # True,引用同一对象
print(a is c)  # False,虽然值相等,但不是同一对象
print(a == c)  # True,值相等

4. 常见应用场景

  • 判断是否为 None:推荐使用 is 而不是 ==
python 复制代码
x = None
if x is None:
    print("x is None")
  • 类型判断不推荐使用 is
python 复制代码
# 不推荐:
type(x) is int

# 推荐:
isinstance(x, int)

三、in vs is 区别总结

特性 in is
类型 成员运算符 身份运算符
判断内容 某元素是否存在于容器中 两个变量是否指向同一个对象
返回值类型 True / False True / False
应用场景 序列判断、包含性检查 None 判断、引用对象判断

四、综合示例

python 复制代码
a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(2 in a)       # True
print(b is a)       # True
print(c is a)       # False
print(c == a)       # True

d = {'k': 10}
print('k' in d)     # True(判断键)
print(10 in d)      # False(值不在键列表中)

x = None
print(x is None)    # 推荐写法
print(x == None)    # 也可以,但不推荐

五、常见错误与误区

错误写法 问题说明
if x == None: 不推荐;应该使用 x is None 更明确
if a is [1, 2, 3]: 错误;新列表对象地址不同,虽然值一样,但不是一个对象
if 3 is in lst: 错误语法;不能混用 isin

六、推荐实践建议

  • 判断引用关系用 is,尤其是与 None 比较时。
  • 判断容器中是否包含元素,统一使用 in
  • 判断两个变量值是否相等,用 ==,不是 is
  • 永远不要使用 is 来判断数值、字符串等是否相等,除非你确定它们是否是同一对象。

相关推荐
AIbase202414 分钟前
AI时代企业获取精准流量与实现增长的GEO新引擎
人工智能·搜索引擎·百度
陈敬雷-充电了么-CEO兼CTO16 分钟前
具身智能模拟器:解决机器人实机训练场景局限与成本问题的创新方案
大数据·人工智能·机器学习·chatgpt·机器人·具身智能
东临碣石8220 分钟前
【AI论文】Robix:一种面向机器人交互、推理与规划的统一模型
人工智能
Source.Liu33 分钟前
【Python自动化】 21.1 Pandas 读取 Excel 文件的完整指南
python·自动化·pandas
要做朋鱼燕34 分钟前
【C++】 list 容器模拟实现解析
开发语言·c++·笔记·职场和发展·list
Ka1Yan41 分钟前
MySQL索引优化
开发语言·数据结构·数据库·mysql·算法
Hello Mr.Z1 小时前
使用pytorch创建/训练/推理OCR模型
人工智能·pytorch·python
wan5555cn1 小时前
文字生视频的“精准”代码设定的核心原则本质是最小化文本语义与视频内容的KL散度
人工智能·笔记·深度学习·音视频
MediaTea1 小时前
Python 内置函数:pow()
开发语言·python
AndrewHZ1 小时前
【图像处理基石】图像预处理方面有哪些经典的算法?
图像处理·python·opencv·算法·计算机视觉·cv·图像预处理