python中字符串比较使用is、==和cmp()总结


Posted in Python onMarch 18, 2018

经常写 shell 脚本知道,字符串判断可以用 =,!= 数字的判断是 -eq,-ne 等,但是 Python 确不是这样子的。

所以作为慢慢要转换到用 Python 写脚本,这些基本的东西必须要掌握到骨子里!

在 Python 中比较字符串最好是使用简单逻辑操作符。

例如,确定一个字符串是否和另外一个字符串匹配。正确的,你可以使用 is equal 或 == 操作符。你也可以使用例如 >= 或 < 来确定几个字符串的排列顺序。

从官方文档上看

The operators ``is`` and ``is not`` test for object identity: ``x is
y`` is true if and only if *x* and *y* are the same object. ``x is
not y`` yields the inverse truth value.
 
cmp(...)
 cmp(x, y) -> integer
 
 Return negative if x<y, zero if x==y, positive if x>y.

也就是说 is 用来判断是否是同一个对象,is 是种很特殊的语法,你在其它的语言应该不会见到这样的用法。

python is 主要是判断 2 个变量是否引用的是同一个对象,如果是的话,则返回 true,否则返回 false。
判断数字相等不要用 is 操作符

>>> a = 256
>>> b = 256
>>> id(a)
9987148
>>> id(b)
9987148
>>> a = 257
>>> b = 257
>>> id(a)
11662816
>>> id(b)
11662828

为什么两次 is 返回的是不同结果?不是应该都是 true 吗?

因为 string pooling (或叫intern)。 is 相等代表两个对象的 id 相同(从底层来看的话,可以看作引用同一块内存区域)。 至于为什么 “ABC” 被 intern 了而 “a bc” 没有,这是 Python 解析器实现决定的,可能会变。

== 用来判断两个对象的值是否相等(跟 Java 不同,Java 中 == 用来判断是否是同一个对象)。

今天我用 == 来判断两个 IP 地址 字符串是否相同。

#!/usr/bin/python
 
strtmp = '192.169.1.161'
file_object = open(r'public_ip.txt')
try:
 all_the_text = file_object.readlines()
 firstline = all_the_text[0].rstrip()
finally:
 file_object.close()
 
#print firstline
 
#if strtmp == firstline:
s = (strtmp is firstline)
print s
if (strtmp is firstline):
 print 'yes'
else:
 print 'no'

来个简单点的例子:

#-*-conding:utf-8-*-
i='xinwen';
m=input();
if i==m:
 print('yes');
else:
 print('no');
 
input();

在 if 判断语句中非常有用呐!

#!/usr/bin/python
# Filename: if.py
 
number = 23
guess = int(raw_input('Enter an integer : '))
 
if guess == number:
 print 'Congratulations, you guessed it.' # New block starts here
 print "(but you do not win any prizes!)" # New block ends here
elif guess < number:
 print 'No, it is a little higher than that' # Another block
 # You can do whatever you want in a block ...
else:
 print 'No, it is a little lower than that'
 # you must have guess > number to reach here
 
print 'Done'
# This last statement is always executed, after the if statement is executed

cmp() 函数则是相当于 <,==,> 但是在 Python3 中,cmp() 函数被移除了,所以我以后还是避免少用这个函数。

>>> x='a'
>>> x+'b' is 'ab'
False
>>> x+'b' == 'ab'
True
>>> cmp(x+'b','ab')
0
>>> id(x+'b')
32468384L
>>> id('ab')
46933696L
>>>

注意:

>>> a='abc'
>>> b='abc'
>>> a is b
True
>>> id(a) == id(b)
True
>>>

可以看出内容相同的字符串实际上是同一个对象(Java 中直接赋值的字符串也可用 == 来判断,但是使用 new 实例化的对象则需要使用equals(String s) 来判断)。

以上几个例子大家应该可以明白在python中字符串比较使用is、==和cmp()的方法了

Python 相关文章推荐
Python random模块用法解析及简单示例
Dec 18 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
wxPython实现列表增删改查功能
Nov 19 Python
在Tensorflow中查看权重的实现
Jan 24 Python
什么是Python中的匿名函数
Jun 02 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
python中的测试框架
Nov 13 Python
python模拟点击在ios中实现的实例讲解
Nov 26 Python
python opencv肤色检测的实现示例
Dec 21 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 #Python
Python zip()函数用法实例分析
Mar 17 #Python
Python iter()函数用法实例分析
Mar 17 #Python
Python callable()函数用法实例分析
Mar 17 #Python
Python matplotlib绘图可视化知识点整理(小结)
Mar 16 #Python
python中matplotlib的颜色及线条控制的示例
Mar 16 #Python
Python lambda函数基本用法实例分析
Mar 16 #Python
You might like
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
Bootstrap table使用方法记录
2017/08/23 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
应用服务器有那些
2012/01/19 面试题
SQL Server面试题
2016/10/17 面试题
大学生活动策划方案
2014/02/10 职场文书
四年大学自我鉴定
2014/02/17 职场文书
目标管理责任书
2014/04/15 职场文书
五水共治一句话承诺
2014/05/30 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
辞职信怎么写
2015/02/27 职场文书
学生会主席任命书
2015/09/21 职场文书
深入理解pytorch库的dockerfile
2022/06/10 Python