zoukankan      html  css  js  c++  java
  • python_运算符与表达式

    运算符与表达式

    • 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=' ')
      ...
      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.])
  • 相关阅读:
    理解TCP/IP,SOCKET,HTTP,FTP,RMI,RPC,webservic
    flyway 管理数据库版本
    【代码工具】Lombok来优雅的编码
    windows常用
    Elasticsearch-基础介绍及索引原理分析
    Zipkin和微服务链路跟踪
    【安装】Mac rabbitMQ
    数论四大定理的证明与部分应用(含算术基本定理)
    洛谷 P1306 斐波那契公约数 题解
    「SWTR-04」Sweet Round 04 游记
  • 原文地址:https://www.cnblogs.com/zxbdboke/p/10468240.html
Copyright © 2011-2022 走看看