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运算符详解的更多相关文章

  1. python 数据类型详解

    python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...

  2. python数据类型详解(全面)

    python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...

  3. 转 python数据类型详解

    python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...

  4. Python闭包详解

    Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...

  5. [转] Python Traceback详解

    追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a   Python Traceback详解   刚接触Python的时候,简单的 ...

  6. Python 递归函数 详解

    Python 递归函数 详解   在函数内调用当前函数本身的函数就是递归函数   下面是一个递归函数的实例: 第一次接触递归函数的人,都会被它调用本身而搞得晕头转向,而且看上面的函数调用,得到的结果会 ...

  7. python线程详解

    #线程状态 #线程同步(锁)#多线程的优势在于可以同时运行多个任务,至少感觉起来是这样,但是当线程需要共享数据时,可能存在数据不同步的问题. #threading模块#常用方法:'''threadin ...

  8. Python Collections详解

    Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...

  9. python生成器详解

    1. 生成器 利用迭代器(迭代器详解python迭代器详解),我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记 ...

随机推荐

  1. WebAPI接口开发实践

    背景 在团队两年多陆续负责了几个项目的开发上线已经代码的review,特别是对老项目的重构过程中,发现之前的API设计是没有任何规范和约定的,不同的开发同学有不同的习惯,因此需要一套规范去约定,现在分 ...

  2. php--->把json传来的stdClass Object类型转array

    php把json传来的stdClass Object类型转array 1.Php中stdClass.object.array的概念 stdClass是PHP的一个基类,即一个空白的类,所有的类几乎都继 ...

  3. C语言博客作业5

    本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业链接 我在这个课程的目标是 学会函数函数的编写与自定义函数 这个作业在那个具体方面帮助我实现目标 通过pta作业练习 参考 ...

  4. 用set、map等存储自定义结构体时容器内部判别各元素是否相同的注意事项

    STL作为通用模板极大地方便了C++使用者的编程,因为它可以存储任意数据类型的元素 如果我们想用set与map来存储自定义结构体时,如下 struct pp { double xx; double y ...

  5. 提醒你一下, 你真的很垃圾, 创建一个maven 的web 项目都忘记了

    1. 创建项目 2. 选择maven 项目 3  然后选择创建 web 项目的模板  (结尾是webapp 的) 4. 选择自己的maven 的配置文件 setting.xml  以及自己的maven ...

  6. idea中使用Live Template自动生成方法所有参数打印

    一 新建模板 二 设置代码模板 三 设置变量 表达式是支持groovy脚本的,所以这里写一个groovy脚本,生成给定格式的日志字符串,methodParameters()是idea内置的函数,获取方 ...

  7. 20190708三人开黑CF模拟赛

    7月8号晚上8点和两位巨佬开了一场虚拟cf: [Helvetic Coding Contest 2018 online mirror (teams allowed, unrated)] 我这么蔡,只A ...

  8. C#系列之占位符的使用方法(二)

    今天,我将简单记录下占位符的使用方法 首先,我们来看不使用占位符的方法来代码输出 int number = 10; int number_1 = 20; int number_2 = 30; Cons ...

  9. LoadRunner随机数

    需求:自定义随机数 方法: int randomnumber; randomnumber = rand()%+; //100到300的随机数 lr_output_message("ca:%d ...

  10. Huffman编码和解码

    一.Huffman树 定义: 给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径达到最小,这样的二叉树称为最优二叉树,也称为霍夫曼树(Huffman树). 特点:     Huffman树 ...