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中的__init__ 、__new__、__call__小结
Apr 25 Python
Pycharm学习教程(3) 代码运行调试
May 03 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
Python类如何定义私有变量
Feb 03 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
一文读懂Python 枚举
Aug 25 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python探索之ModelForm代码详解
2017/10/26 Python
python中字符串的操作方法大全
2018/06/03 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
使用python进行拆分大文件的方法
2018/12/10 Python
Python3数字求和的实例
2019/02/19 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
淘宝客服自我总结鉴定
2014/01/25 职场文书
手机促销活动方案
2014/02/05 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
离婚协议书怎么写
2014/09/12 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis