Python的in,is和id函数代码实例


Posted in Python onApril 18, 2020

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) —— 具体对于相同值的内存管理

# 相同
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() 函数,获取对象的内存地址(不同电脑不一样),例如:

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值没有变化

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python学习思维导图(必看篇)
Jun 26 Python
Python使用三种方法实现PCA算法
Dec 12 Python
EM算法的python实现的方法步骤
Jan 02 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
Python中文编码知识点
Feb 18 Python
python3实现表白神器
Apr 09 Python
python 实现dict转json并保存文件
Dec 05 Python
在Python中实现函数重载的示例代码
Dec 12 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
学python需要去培训机构吗
Jul 01 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
Python unittest discover批量执行代码实例
Sep 08 Python
Python json读写方式和字典相互转化
Apr 18 #Python
Python figure参数及subplot子图绘制代码
Apr 18 #Python
Python数组拼接np.concatenate实现过程
Apr 18 #Python
Python稀疏矩阵及参数保存代码实现
Apr 18 #Python
Python try except异常捕获机制原理解析
Apr 18 #Python
Python数据正态性检验实现过程
Apr 18 #Python
如何基于线程池提升request模块效率
Apr 18 #Python
You might like
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
python实现redis三种cas事务操作
2017/12/19 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
python通过zabbix api获取主机
2018/09/17 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
python中对数据进行各种排序的方法
2019/07/02 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
一份Java笔试题
2012/02/21 面试题
工程总经理工作职责
2013/12/09 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
课内比教学心得体会
2014/09/09 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android