python的in,is和id函数

1. in 和 not in —— 判断某个序列中是否存在某值

# in
aa = [1,2,3,'Cathy','太平洋']
if '大西洋' in aa:
    print('yes')
else:
    print('no')  # no

# not in
if '大西洋' not in aa:
    print('yes')  # yes
else:
    print('no')
    
#-------------------------------------------------------
# 判断字符串是否存在某子串    
if '马来西亚' in '马来西亚是一个太平洋国家':   
    print('of course') # 输出 'of course'

# ------------------------------------------------------
if 0 in (0,1,2,3):
    print('hhhh') #输出 'hhhh'

if 0 in [0,1,2,3]:
    print('kkkk') #输出 'hhhh'

2. is 和 is not —— 判断两个标识符是不是指向同一个地址(同一个对象),类似于判断 id(x) == id(y) —— 具体对于相同值的内存管理

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 相同
bb = 234
cc = 234
if bb is cc:
    print('bb is cc')  #结果是 bb is cc 
else:
    print('bb is not cc')
print(id(bb))  # id()值一样,因为python的优化机制,相同的'数值'数据会使用同样的内存空间。
print(id(cc))

# 相同
bb = 'hhh'
cc = 'hhh'
if bb is cc:
    print('bb is cc')  #同样也是因为python的自身机制,在某些'字符'位数下,相同字符串也会指向同一地址 ------ 有说20位的,与系统有关
else:
    print('bb is not cc')# 相同,python的对象引用机制
bb = [1,2,3]  
cc = bb
if bb is cc:
    print('bb is cc')  #结果是 bb is cc 
else:
    print('bb is not cc')

# 不相同
bb = [1,2,3]
cc = [1,2,3]
if bb is cc:
    print('bb is cc')   
else:
    print('bb is not cc') #结果是 bb is not cc
print(id(bb))  # id()值不一样
print(id(cc))

3. id() 函数,获取对象的内存地址(不同电脑不一样),例如:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
bb = 'hhh'
cc = bb
if bb is cc:
    print('bb is cc')  #结果是 bb is cc 
else:
    print('bb is not cc')
print(id(bb))  # id()值一样,均为 1680346901336
print(id(cc))

4. 可变数据类型和不可变数据类型

  • 不可变数据类型: 当该类型的变量值发生了改变,它对应的内存地址也会发生改变。

  • 可变数据类型 :当该类型的变量值发生了改变,它对应的内存地址不发生改变。

这里的可变不可变,是指内存中的值内容(value)是否可以被改变。如果是不可变类型,在操作对象本身的时候,必须在内存新申请一块内存(因为原内存内容是不可变的)。如果是可变类型,操作对象的时候,不需要再在其他地方申请内存,只需要在此对象后面连续申请内存,所以它的地址会保持不变,但该内存区域大小会变化。

在python中:

  • int,string,float,tuple —— 属于python的不可变类型

  • object、list、set —— 属于python的可变类型

使用:可以使用内建函数id()来确认对象的地址在两次赋值前后是否发生了变化。

例如:分别对于数值和列表类型:

a = 1
print(id(a))
a = a+1  #a本身发生变化
print(id(a))
# 结果分别为:140732932812544 和 140732932812576,表示id值发生了变化

a = ['1']
print(id(a))
a.append('sss') #a本身发生变化
print(id(a))
print(a)   # 输出:['1', 'sss']
# 结果分别为:1680347029768 和 1680347029768,表示id值没有变化
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的is类函数是用于比较两个对象是否为同一个对象的。其中包括以下几个函数: 1. `is`:用于比较两个对象的身份是否相同,即它们是否指向同一个内存地址。例如,`a is b`表示`a`和`b`是否为同一个对象。 2. `id`:用于获取对象的内存地址。每个对象在内存中都有一个唯一的地址,可以通过`id(object)`来获取该对象的地址。 3. `numpy.isin`:是numpy库中的一个函数,用于判断一个元素是否在给定的测试元素中。它接受一个待测试元素和一个测试元素的数组,并返回一个布尔值的数组,表示每个待测试元素是否在测试元素中存在。 这些函数在不同的场景中具有不同的用途,`is`函数用于比较对象的身份,`id`函数用于获取对象的内存地址,而`numpy.isin`函数用于判断元素是否在数组中存在。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python numpy.isin函数方法的使用](https://blog.csdn.net/weixin_39875675/article/details/110758935)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python的in,is和id函数](https://blog.csdn.net/qdPython/article/details/110086490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值