运算符与表达式

  • python运算符

    运算符 功能说明
    + 算术加法,列表、元组、字符串合并与连接,正号
    - 算术减法,集合差集,相反数
    * 算术乘法,序列重复
    / 真除法
    // 求整商,但如果操作数中有实数的话,结果为实数形式的整数
    % 求余数,字符串格式化
    ** 幂指数
    <,<=,>,>=,==,!= (值)大小比较,集合的包含关系比较
    or 逻辑或
    and 逻辑与
    not 逻辑非
    in 成员测试
    is 对象同一性测试,即测试是否为同一对象或内存地址是否相同
    |,^,&,<<,>>,~ 位或,位异或,位与,左移位,有移位,位求反
    &,|,^ 集合交集、并集、对称差集
    @ 矩阵相乘运算符

算术运算符

  • +运算符除了用于算术加法以外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象之间相加或连接

    >>> [1,2,3] + [4,5,6]
    [1, 2, 3, 4, 5, 6]
    >>> (1,2,3) + (4,)
    (1, 2, 3, 4)
    >>> 'abc' + '1234'
    'abc1234'
    >>> 'A' + 1   # 不支持字符与数字相加,抛出异常
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    TypeError: must be str, not int
    >>> True + 3
    4
    >>> False + 3
    3
  • *运算符除了表示算术乘法,还可用与列表、元组、字符串这几个序列类型与整数的乘法,表示序列元素的重复,生成新的序列对象。字典和集合不支持与整数的相乘,因为其中的元素是不允许重复的。

    >>> True*3
    3
    >>> False * 4
    0
    >>> [1,2,3] * 3
    [1, 2, 3, 1, 2, 3, 1, 2, 3]
    >>> (1,2,3) * 2
    (1, 2, 3, 1, 2, 3)
    >>> 'abc'*3
    'abcabcabc'
  • 运算符/和//在python中分别表示算术除法和算术求整商

    >>> 3/2
    1.5
    >>> 15 // 4
    3
    >>> 15.0 // 4
    3.0
    >>> -15 // 4  # 向下取整
    -4
  • %运算符可以用与整数或实数的求余数运算,还可以用于字符串格式化,但是并不推荐这种用法

    >>> 789 % 23
    7
    >>> 123.45 % 3.2
    1.849999999999996
    >>> '%c,%d'%(65,65)
    'A,65'
    >>> '%f,%s'%(65,65)
    '65.000000,65'
  • **运算符表示幂乘,等价与内置函数pow()

    >>> 3 ** 2
    9
    >>> pow(3,2,8) # 等价于(3**2)%8
    1
    >>> 9 ** 0.5
    3.0
    >>> (-9)**0.5 # 可以计算负数的平方根
    (1.8369701987210297e-16+3j)

关系运算符

  • python关系运算符最大的特点是可以连用,其含义于我们日常的理解完全一致。使用关系运算符的一个最中要的前提是,操作数之间必须可以比较大小

    >>> 1<3<5 # 等价于1<3 and 3<5
    True
    >>> 1<5>2
    True
    >>> 1>6<8
    False
    >>> 1>6<math.sqrt(9) # 具有惰性求值或者逻辑短路的特点
    False
    >>> 1<6<math.sqrt(9)
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    NameError: name 'math' is not defined
    >>> import math
    >>> 1<6<math.sqrt(9)
    False
    >>> 'Hello'>'world' # 比较字符串的大小
    False
    >>> {1,2,3}<{1,2,3,4} # 测试是否是子集
    True
    >>> [1,2,3]<[1,2,4] # 比较列表的大小
    True
    >>> [1,2,3]<[1,2,3]
    False
    >>> [1,2,3]<[1,1,4]
    False
    >>> 'Hello'>3 # 字符串和数字不能比较
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    TypeError: '>' not supported between instances of 'str' and 'int'
    >>> {1,2,3}=={3,2,1}  # 测试两个集合是否相等
    True
    >>> {1,2,4}>{1,2,3}
    False
    >>> {1,2,4}>{1,2}  # 测试是否子集True>>> {1,2,4}>{1,2,4}False

成员测试运算符in与同一性测试运算符is

  • 成员测试运算符in

    >>> 3 in [1,2,3]
    True
    >>> 5 in range(1,10,1) # range()是用来生成指定范围数字的内置函数
    True
    >>> 'abc' in 'abcfhdgd'
    True
    >>> for i in (3, 5, 7):
    ...   print(i,end='\t')
    ...
    3       5       7       >>>
  • 同一性测试运算符is

    测试两个对象是否是同一个,如果两个对象是同一个,两者具有相同的地址

    >>> 3 is 3
    True
    >>> x = [300, 300, 300] # 基于值的内存管理,同一个值在内存中只有一份
    >>> x[0] is x[1]
    True
    >>> x = [1, 2, 3]
    >>> y = [1, 2, 3]
    >>> x is y
    False
    >>> x[0] is y[0]
    True
    >>> x.append(4)
    >>> x
    [1, 2, 3, 4]
    >>> x = y
    >>> x
    [1, 2, 3]
    >>> x is y
    True
    >>> x.append(4)
    >>> x
    [1, 2, 3, 4]
    >>> y
    [1, 2, 3, 4]
    >>>

位运算与集合运算

  • 位运算符只能用于整数

  • 位运算规则

    # 位与运算&
    1 & 1 = 1
    1 & 0 = 0 & 1 = 0 & 0 = 0
    # 位或运算
    1 | 1 = 1 | 0 = 1
    0 | 1 = 1
    0 | 0 = 0
    # 位异或运算
    1 ^ 1 = 0 ^ 0 = 0
    0 ^ 1 = 1 ^ 0 = 1
    # 左位移时右侧补0,每左位移一位相当于乘以2;右位移时左侧补0,每右位移一位相当于除以2
  • 示例

    >>> 3 << 2
    12
    >>> 23 >> 2
    5
    >>> 3 & 7
    3
    >>> 3 | 8
    11
    >>> 3 ^ 5
    6
  • 集合的并集、交集、对称差集、差集

    >>> {1, 2, 3} | {3, 4, 5} # 并集
    {1, 2, 3, 4, 5}
    >>> {1, 2, 3} & {3, 4, 5} # 交集
    {3}
    >>> {1, 2, 3} ^ {3, 4, 5} # 对称差集
    {1, 2, 4, 5}
    >>> {1, 2, 3} - {3, 4, 5} # 差集
    {1, 2}

逻辑运算符

  • 逻辑运算符and、or、not常用来连接条件表达式构成更加复杂的条件表达式,并且and和or具有惰性求值或逻辑短路的特点;注意:运算符and和or并不一定会返回True或False,而是得到最后一个被计算的表达式的值,但是运算符not一定会返回True或False。

    >>> 3 > 5 and a > 5
    False
    >>> 3 > 5 or a > 5
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    NameError: name 'a' is not defined
    >>> 3 < 5 or a > 5
    True
    >>> 3 and 6
    6
    >>> 3 and 5 > 2
    True
    >>> 3 not in [1, 2, 3]
    False
    >>> 3 is not 5
    True
    >>> not 3
    False
    >>> not 0
    True
    >>>

矩阵运算符@

>>> import numpy        # numpy是用于科学计算的Python扩展库
>>> x = numpy.ones(3) # ones()函数用于生成全1矩阵,参数表示矩阵大小
>>> m = numpy.eye(3) * 3 # eye()函数用于生成单位矩阵
>>> m[0,2] = 5
>>> m[2,0] = 3
>>> x
array([1., 1., 1.])
>>> m
array([[3., 0., 5.],
      [0., 3., 0.],
      [3., 0., 3.]])
>>> x@m
array([6., 3., 8.])

python_运算符与表达式的更多相关文章

  1. Sql Server系列:运算符和表达式

    运算符的一些符号,他们能够用于执行算术运算.字符串连接.赋值以及在字段.常量和变量之间进行比较.在SQL Server 2012中,运算符主要由以下6大类:算术运算符.赋值运算符.比较运算符.逻辑运算 ...

  2. C Primer Plus_第5章_运算符、表达式和语句_编程练习

    Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...

  3. javascript运算符与表达式

    表达式 表达式是关键字.运算符.变量以及文字的组合,用来生成字符串.数字或对象.一个表达式可以完成计算.处理字符.调用函数.或者验证数据等操作. 表达式的值是表达式运算的结果,常量表达式的值就是常量本 ...

  4. 【C语言学习】《C Primer Plus》第5章 运算符、表达式和语句

    学习总结 1.有了一定的语言基础,运算符和表达式这些都大同小异,无外乎赋值运算符(=).算术运算符(+.-.*./.%.++.——)和其他的一下运算符(sizeof.(type)). 2.声明一个参数 ...

  5. [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

    [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...

  6. [Java 基础]运算符和表达式

    Java运算符 (1)赋值操作符 赋值操作符(=)表示:取右边的值(即右值),把它复制给左边(即左值). 右值可以是任意的常量.变量或表达式(只要可以生成一个值). 左值必须是一个明确的.已命名的变量 ...

  7. 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等

    [源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native  ...

  8. Python运算符与表达式

    Python运算符包括赋值运算符.算术运算符.关系运算符.逻辑运算符.位运算符.成员运算符和身份运算符. 表达式是将不同类型的数据(常亮.变量.函数)用运算符按照一定得规则连接起来的式子. 算术运算符 ...

  9. 01-Java基础知识:数据类型与变量、标识符、运算符、表达式

    Java基础知识:数据类型与变量.标识符.运算符.表达式 一.数据类型 Java定义了基本数据类型.引用数据类型.自定义类型. 八种基本数据类型:byte (1). short (2).  int ( ...

随机推荐

  1. PAT 1063 计算谱半径(20)(代码)

    1063 计算谱半径(20 分) 在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a​1​​+b​1​​i,⋯,a​n​​+ ...

  2. jsonp,ajax,json问题

    JSONP技术 JSONP是解决跨域问题的一种常见方式 跨域问题,因为浏览器有同源策略,所以当不同域间进行数据交互的时候就会出现跨域问题 同源策略:只有在同协议.同域名.同端口的情况下才能进去数据交互 ...

  3. POJ 3469.Dual Core CPU 最大流dinic算法模板

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 24830   Accepted: 10756 ...

  4. 去掉tableView空白区域的分割线

    //把多余的分割线去掉 UIView * footerView = [[UIView alloc] initWithFrame:CGRectZero]; self.tableView.tableFoo ...

  5. DOM-查找和修改

    1. 查找: 按HTML查找: 问题: 每次只能按一个条件查找,如果查找条件复杂,则步骤很繁琐 解决: 选择器: 按选择器查找: 2个API 1. 只查找一个元素: var elem=parent.q ...

  6. sql创建备份表和复制数据到备份表

    1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...

  7. MacBook小技巧

    退出全屏:Control+Command+F.关闭当前的应用程序:Command+W.退出应用程序,可对着Dock上的应用程序辅助点按(右键),选择退出.也可直接按Commnad+Q退出当前的应用程序 ...

  8. Idea中如何将web项目打包成war包并放到tomcat中启动

    第一步:在idea中选中Artifacts.右侧勾选Build on make生成war包,如下图 第二步:将target文件夹里面的war包拷贝到tomcat文件下的webapp目录下 第三步:修改 ...

  9. Codeforces Round #519 by Botan Investments F. Make It One

    https://codeforces.com/contest/1043/problem/F 题意 给你n个数,求一个最小集合,这个集合里面数的最大公因数等于1 1<=n<=3e5 1< ...

  10. Bootstrap Table 超多列 使用滚动条

    overflow-x: scroll;横向滑动详细讲解 able显示滚动条,要先把table放到一个div中,控制div 属性overflow值为scroll <div style=" ...