3.Python运算符详解
1.算数运算符
符号:+ - * / %(取余、取模) //(取整) **(开方)
2.比较运算符
符号:> >= < <= ==(全等) !=(不等于)
特点:比较运算的结果一定是布尔值(True/False)
print(7 >= 3) #True
print(7 < 3) #False
3.赋值&混合赋值运算符
赋值运算符符号:=
混合赋值运算符符号:+= -= *= /= %=
a += 4 #相当于:a = a + 4
a += b #相当于:a = a + b
4.逻辑运算符
需求:a = 6 3<a<9(数学的实现,但是多数计算机语言不支持,python支持)
拆分:a > 3 a < 9 两个表达式之间需要使用逻辑运算符来进行关联
符号:and(逻辑与,并且,去交集)、or(逻辑或,或者,取并集)、not(逻辑非,取反)
特点:运算符两侧的数据类型一定是布尔型,结果也是布尔型
模板:
对于and操作而言:
True and True 结果:True
True and False 结果:False
False and True 结果:False
False and False 结果:False
总结:and操作,满足一假即假的特点,理解为:对False敏感
对于or操作而言:
True or True 结果:True
True or False 结果:True
False or True 结果:True
False or False 结果:False
总结:or操作,满足一真即真的特点,理解为:对True敏感
对于not操作而言:
not True 结果为:False
not False 结果为:True
5.位运算符
长处:是运算效率最高的运算符,直接是底层二进制的运算
符号:&(按位与)、|(按位或)、^(按位异或)(相异就为一)、<<(左移)、>>(右移)
模板:
对于按位与操作而言:(全1才为1)
9 & 5,结果为多少? 1
9:0000 1001
5:0000 0101
结果:0000 0001
对于按位或操作而言:(有1就为1)
9 | 5,结果为多少? 13
9:0000 1001
5:0000 0101
结果:0000 1101
对于按位异或操作而言:(相异就为1)
9 ^ 5,结果为多少? 12
9:0000 1001
5:0000 0101
结果:0000 1100
对于<<(左移)操作而言:
9 << 2,结果为多少? 36
9:0000 1001
结果:00 100100
对于>>(右移)操作而言:
9 >> 2,结果为多少? 2
9:0000 1001
结果:0000 0010
6.成员运算符
作用:运用对于容器对象的判断,结果都是布尔值;判断某个元素是否存在于容器中
符号:in / not in
str1 = "abcdefg1234567"
print("c" in str1) #True dic1 = {"name":"Tom","age":30}
print("name" in dic1) #True
print("Tom" in dic1) #False
【注意】对于dict对象,只能判断键是否存在,对于值是无效的(永远返回False)
补充: 何为表达式?
大白话:凡是计算可以得出个值的就是表达式
何为条件表达式?
大白话:在表达式的基础上,最终结果一定是布尔值
7.三元/三目运算符
格式:【表达式1 if 条件表达式 else 表达式2】。执行流程:会先执行条件表达式,如果执行结果为True,那么就会执行表达式1,并且将表达式1的结果作为整个三元运算的最终结果;如果执行结果为False,那么就会执行表达式2,并且将表达式2的结果作为整个三元运算的最终结果
例如:比较两个数的大小,得到较大值
print(a if a > b else b)
三元运算符就是python语法糖之一。【补充一个python语法糖:列表生成式】
作用:执行完毕之后会返回给程序一个列表对象,在不破坏原本复杂需求的同时;更加便捷的得到一个列表对象(代码更加简短)。格式: 【expr for ver1,[ver2],... in 序列对象(range、str、list、tuple、dict...) if ...】
# 案例1:得到[1,2,3,...,10]列表对象
print([x for x in range(1,11)]) # 案例2:得到 1*1,2*2,3*3,...,10*10的一个列表对象
print([x ** 2 for x in range(1,11)]) # 案例3:得到 1*1,2*2,3*3,...,10*10的一个列表对象,元素只接受偶数的乘积值
print([x ** 2 for x in range(1,11) if x % 2 == 0]) #案例4:实现全排列,str1 = 'ABC',str2 = 'XYZ',得到效果如下:['AX','AY','AZ','BX','BY',...,'CZ']
print([x + y for x in str1 for y in str2]) # 案例5:字典对象:{'aa':'AA','bb':'BB','cc':'CC'},得到字典对象的键和值,然后组合成为如下数据存入到列表中返回:得到['aa=AA','bb=BB','cc=CC']
print([k + '=' + v for k,v in dic1.items()]) # 案例6:将列表lt = ['PYTHON','Java','PHP','IOS'] 中的每个字符串元素都转换为全小写返回,得到:['python','java','php','ios']
print([x.lower() for x in lt]) #需求7:将列表lt = ['PYTHON','Java','PHP','IOS',200]中的每个字符串元素都转换为全小写返回,得到:['python','java','php','ios']
# print([x.lower() for x in lt]) # AttributeError类型错误
print([x.lower() for x in lt if isinstance(x,str)])
【注意事项】上面代码的需求7中,lower()函数是属于字符串类型独有的函数,而lt中200是int类型的数据,一旦尝试调用lower()就会报错(非法的,不允许的);这里可以使用内置函数:isinstance(obj,type)解决。isinstance(obj,type)函数的作用:判断obj对象是否属于type类型,如果类型匹配,则返回True,反之,返回False。
3.Python运算符详解的更多相关文章
- python 数据类型详解
python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...
- python数据类型详解(全面)
python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...
- 转 python数据类型详解
python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...
- Python闭包详解
Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...
- [转] Python Traceback详解
追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a Python Traceback详解 刚接触Python的时候,简单的 ...
- Python 递归函数 详解
Python 递归函数 详解 在函数内调用当前函数本身的函数就是递归函数 下面是一个递归函数的实例: 第一次接触递归函数的人,都会被它调用本身而搞得晕头转向,而且看上面的函数调用,得到的结果会 ...
- python线程详解
#线程状态 #线程同步(锁)#多线程的优势在于可以同时运行多个任务,至少感觉起来是这样,但是当线程需要共享数据时,可能存在数据不同步的问题. #threading模块#常用方法:'''threadin ...
- Python Collections详解
Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...
- python生成器详解
1. 生成器 利用迭代器(迭代器详解python迭代器详解),我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记 ...
随机推荐
- 老哈佛H3的空调控制器的维修记录
这部哈弗车是2005年出厂的,应该差不多是第一批了吧,小毛病很多了.夏天到了,空调也不能启动,灯不亮,按键没反应令我很是着急.于是开始研究. 这款空调的控制器在cd机中控下面,需要拆中控取出.是一个黑 ...
- Informatica在linux下安装搭建
安装介质清单准备 介质名称 版本信息 描述 Informatica Powercenter 9.5.1 for Linux 64 bit 必须 Java Jdk 1.6.0_45 for Linux ...
- MGR监控报警
一.报警思路 m.conf文件记录配置信息,只需要修改这个文件的内容即可(需要将mysql_stat.sh里面的信息写到这里,进行中) mysql_stat.sh文件作为MGR状态监测脚本,加入定时任 ...
- TensorFlow 编程基础
1.TensorFlow 安装:https://www.cnblogs.com/pam-sh/p/12239387.html https://www.cnblogs.com/pam-sh/p/1224 ...
- 四、Django学习之关系表介绍及使用
关系表介绍及使用 一对一关系 xx = models.OneToOneField(to='表名',to_field='字段名',on_delete=models.CASCADE) #on_delete ...
- C语言指针及占据内存空间
第一.了解内存空间 本文章文字有点多,会有点枯燥,配合图文一起看可以缓解枯燥,耐心阅读哦!!! 先了解内存地址,才更好的理解指针! 我们可以把内存想象为成一列很长很长的货运火车,有很多大小相同的车厢, ...
- Unreal Engine 4 蓝图完全学习教程(四)—— 变量与计算
Ⅰ.值的基础类型 ①文本.字符串(Text.String):文本类型的值. ②整型.浮点型(Int.Float):数字类型的值. ③布尔型(Bool):表示“真或假”二者选其一的状态. Ⅱ.加法运算 ...
- 实验7:交换机IOS升级
交换机IOS升级首先需要有IOS文件,如果没有备份原文件的话,可以找个同一版本的IOS来替代. 第一种方法:X-Modem 以前我曾经尝试过一种方法,就是当Flash被删除后,启动无法进入系统,可以用 ...
- CRC循环冗余检测C语言实现----花了几天时间乱写的
由于笔者目前正在上计算机网络的课,老师要我们编一下crc的循环检测过程,所以我想着刚好在学c,那就随便看看写不写的了,首先百度了一下网上资料,基本都是用位移运算符实现的,由于本人懒得去看一下位移运算, ...
- 教你5分钟做个手机APP[视频]
天天宅在家里,没什么事做,录个教学视频吧! 发到了视频网站上去根本没人看,伤心ing啊! 不知cnblogs上面是否让我发! 先上一张效果图看看哈: 如果播放不正常请点这里:https://www.b ...