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使用代理抓取网站图片(多线程)
Mar 14 Python
python读取json文件并将数据插入到mongodb的方法
Mar 23 Python
Python 爬虫爬取指定博客的所有文章
Feb 17 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
Aug 31 Python
django foreignkey(外键)的实现
Jul 29 Python
np.dot()函数的用法详解
Jan 17 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
python与idea的集成的实现
Nov 20 Python
Python实现8种常用抽样方法
Jun 27 Python
Python 可迭代对象 iterable的具体使用
Aug 07 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 删除记录实现代码
2009/03/12 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
python实现周期方波信号频谱图
2018/07/21 Python
Python同步遍历多个列表的示例
2019/02/19 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
django自带调试服务器的使用详解
2019/08/29 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
关键字throw与throws的用法差异
2016/11/22 面试题
给导游的表扬信
2014/01/10 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
校车安全责任书
2014/08/25 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
歼十出击观后感
2015/06/11 职场文书
工作感想范文
2015/08/07 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android