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 smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
win与linux系统中python requests 安装
Dec 04 Python
彻底理解Python list切片原理
Oct 27 Python
用Python实现KNN分类算法
Dec 22 Python
用于业余项目的8个优秀Python库
Sep 21 Python
PyQt5实现简单数据标注工具
Mar 18 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
Jul 11 Python
python分布式编程实现过程解析
Nov 08 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
python中用ggplot绘制画图实例讲解
Jan 26 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 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
PHP4中session登录页面的应用
2008/07/25 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
Python中@property的理解和使用示例
2019/06/11 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
python同时遍历两个list用法说明
2020/05/02 Python
python 写一个文件分发小程序
2020/12/05 Python
Python-split()函数实例用法讲解
2020/12/18 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
介绍一下XMLHttpRequest对象
2012/02/12 面试题
幼儿园大班新学期寄语
2014/01/18 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
八一建军节活动方案
2014/02/10 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸