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多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
flask入门之表单的实现
Jul 18 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
kali中python版本的切换方法
Jul 11 Python
对Django中内置的User模型实例详解
Aug 16 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
Python xpath表达式如何实现数据处理
Jun 13 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
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
APMServ使用说明
2006/10/23 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
会计专业推荐信
2013/10/29 职场文书
见习报告格式范文
2014/11/08 职场文书
给老师的感谢信
2015/01/20 职场文书
交通事故被告答辩状
2015/05/22 职场文书
家长会主持词开场白
2015/05/29 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
yolov5返回坐标的方法实例
2022/03/17 Python
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android