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 相关文章推荐
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
使用tensorflow实现AlexNet
Nov 20 Python
Python编程argparse入门浅析
Feb 07 Python
pytorch中tensor的合并与截取方法
Jul 26 Python
python 自定义对象的打印方法
Jan 12 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
python自动生成证件号的方法示例
Jan 14 Python
python实现简单的学生管理系统
Feb 22 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 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快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
用python爬取租房网站信息的代码
2018/12/14 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
Form表单及django的form表单的补充
2019/07/25 Python
tensorflow 实现数据类型转换
2020/02/17 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
python主要用于哪些方向
2020/07/05 Python
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
计算机网络专业推荐信
2013/11/24 职场文书
情人节寄语大全
2014/04/11 职场文书
入党培养人考察意见
2015/06/08 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL
python实现A*寻路算法
2021/06/13 Python
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js