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数组条件过滤filter函数使用示例
Jul 22 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
Golang与python线程详解及简单实例
Apr 27 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
python使用RNN实现文本分类
May 24 Python
利用Python将每日一句定时推送至微信的实现方法
Aug 13 Python
Python语言异常处理测试过程解析
Jan 08 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
Python基于requests实现模拟上传文件
Apr 21 Python
Python新手学习函数默认参数设置
Jun 03 Python
python垃圾回收机制原理分析
Apr 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上传文件并显示上传进度的方法
2015/03/24 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
javascript 模拟点击广告
2010/01/02 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
python处理大数字的方法
2015/05/27 Python
python提取字典key列表的方法
2015/07/11 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
Django Rest framework频率原理与限制
2019/07/26 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
python爬虫可以爬什么
2020/06/16 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
租房协议书样本
2014/08/20 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
python如何获取网络数据
2021/04/11 Python
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js