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获取元素在数组中索引号的方法
Jul 15 Python
详解python3百度指数抓取实例
Dec 12 Python
Python进程间通信Queue实例解析
Jan 25 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
Python实现元素等待代码实例
Nov 11 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
Python tkinter模版代码实例
Feb 05 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
Python中and和or如何使用
May 28 Python
Django项目创建及管理实现流程详解
Oct 13 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
用Python实现Newton插值法
Apr 17 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的图形函数中显示汉字
2006/10/09 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
最短的IE判断代码
2011/03/13 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
javascript date格式化示例
2013/09/25 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
javascript时间差插件分享
2016/07/18 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
基于anaconda下强大的conda命令介绍
2018/06/11 Python
python3中函数参数的四种简单用法
2018/07/09 Python
python匿名函数的使用方法解析
2019/10/10 Python
python基于opencv检测程序运行效率
2019/12/28 Python
Python换行与不换行的输出实例
2020/02/19 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
军训自我鉴定100字
2014/02/13 职场文书
文秘个人求职信范文
2014/04/22 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python