美文网首页
Python学习(四)--运算符

Python学习(四)--运算符

作者: 白面葫芦娃92 | 来源:发表于2019-10-16 10:37 被阅读0次

    学习参考链接:https://www.runoob.com/python/python-operators.html
    1.数值运算符
    //加
    >>> 'hello'+' world'
    'hello world'
    //减
    >>> 3 - 1
    2
    //乘
    >>> [1,2]*3
    [1, 2, 1, 2, 1, 2]
    //除
    >>> 3 / 2
    1.5
    >>> 3 // 2
    1
    //取余
    >>> 5%2
    1
    //求平方
    >>> 5**2
    25
    //求4次方
    >>> 2**4
    16
    

    2.赋值运算符
    先做运算再赋值

    >>> c = 1
    >>> c = c+1
    >>> print(c)
    2
    >>> c += 2
    >>> print(c)
    4
    

    注意:python里没有c++,c--这种自增、自减运算符
    3.关系(比较)运算符
    bool,字符串,数字都可以比较

    >>> 1==1
    True
    >>> 1>=1
    True
    >>> 1>1
    False
    >>> a = 1
    >>> b = 2
    >>> a != b
    True
    >>> a == b
    False
    >>> a <= b
    True
    

    4.不止数字可以做比较运算

    >>> 'a'>'b'
    False
    >>> ord('a')
    97
    >>> ord('b')
    98
    //字符串比较,从左到右一个字符一个字符的比,只要有第一个能比出大小,就是整个字符串的大小
    >>> 'abc' > 'abd'
    False
    >>> 'abc' < 'azb'
    True
    //多个元素的字符串没有asc码
    >>> ord('abc')
    Traceback (most recent call last):
      File "<pyshell#11>", line 1, in <module>
        ord('abc')
    TypeError: ord() expected a character, but string of length 3 found
    
    //列表,元组,集合都可以进行比较
    >>> [1,2,3] < [2,3,4]
    True
    >>> (1,2,3) < (1,3,2)
    True
    >>> {1,2,3} > {2,1,3}
    False
    

    5.逻辑运算符
    主要用于操作bool类型,返回结果也是bool类型
    and 与
    or 或
    not 非

    >>> True and False
    False
    >>> True or False
    True
    >>> not False
    True
    >>> not True
    False
    >>> not not False
    False
    

    非bool类型与bool类型有转换关系,所以也会出现'a' and 'b'这种现象
    对应关系:
    int类型 0被认为是False,非0被认为是True
    str类型 空字符串认为是False,非空被认为是True
    list类型 []认为是False,非空list被认为是True

    >>> not 1
    False
    >>> not ''
    True
    >>> not ' '
    False
    >>> not '0'
    False
    >>> not []
    True
    >>> not [0]
    False
    
    //and运算符,计算机要读完第二个元素才能知道结果,因此两个True的情况下,返回后边那个
    >>> 1 and 2
    2
    >>> 'a' and 'b'
    'b'
    >>> 'b' and 'a'
    'a'
    //or运算符,计算机知道第一个是True了,就不用读第二个就知道结果是True了,因此返回前边那个
    >>> 'a' or 'b'
    'a'
    >>> 'b' or 'a'
    'b'
    >>> 1 or 0
    1
    >>> 0 or 1
    1
    >>> not 'a'
    False
    >>> [1] or []
    [1]
    //返回值不一定是第一个元素,主要关注结果是True还是False,这样就好理解了
    >>> [] or [1]
    [1]
    

    6.成员运算符
    特点:用于判断一个元素是否在另外的一组元素中,返回值是bool类型

    >>> a  = 1
    >>> a in [1,2,3,4]
    True
    >>> b = 5
    >>> b in [1,2,3,4]
    False
    >>> b not in [1,2,3,4]
    True
    

    针对字典类型,计算机是按照key来判断in和not in的

    >>> b = 'a'
    >>> b in {'c':1}
    False
    >>> b = 1
    >>> b in {'c':1}
    False
    >>> b = 'c'
    >>> b in {'c':1}
    True
    

    7.身份运算符

    >>> a = 1
    >>> b = 2
    >>> a is b
    False
    >>> a = 1
    >>> b = 1
    >>> a is b
    True
    >>> a = 'hello'
    >>> b = 'world'
    >>> a is b
    False
    >>> c = 'hello'
    >>> a is c
    True
    

    如果两个变量取值相等,则is返回True

    思考一个问题:is 和 == 有什么区别
    >>> a = 1
    >>> b = 1.0
    >>> a == b
    True
    >>> a is b
    False
    

    ==比较的是两个变量的值
    is比较的是两个变量的身份(内存地址)是否相同

    //可以看到,变量a和变量b的数值相等,但是它们的id不相等
    >>> id(a)
    1578722480
    >>> id(b)
    54772368
    

    8.如何判断变量的值、身份和类型
    如何判断值、身份

    >>> a = {1,2,3}
    >>> b = {2,1,3}
    >>> a == b
    True
    >>> a is b
    False
    >>> c = (1,2,3)
    >>> d = (2,1,3)
    >>> c == d
    False
    >>> c is d
    False
    
    >>> id(a)
    54754400
    >>> id(b)
    6459440
    >>> id(c)
    6379320
    >>> id(d)
    44923960
    

    如何判断类型

    >>> a = 'abc'
    >>> isinstance(a,str)
    True
    >>> isinstance(a,int)
    False
    >>> isinstance(a,(int,str,list))
    True
    >>> isinstance(a,(int,list))
    False
    

    不要用type(a)== str这种方法来判断,因为不能判断子类的类型,而isinstance可以,后续会讲到

    >>> a = 'abc'
    >>> type(a) == str
    True
    >>> b = 1
    >>> type(b) == int
    True
    

    9.位运算符
    把数字当做二进制数进行运算
    &………………按位与
    |…………………按位或
    ^………………按位异或
    ~………………按位取反
    <<………………左移动
    >>………………右移动
    举例如下:

    >>> a = 2
    >>> b = 3
    >>> a & b
    2
    

    2转换为2进制……1 0
    3转换为2进制……1 1
    按位进行比较…… 1 0
    二进制的10得到的十进制数就是2,故a&b得到的结果是2
    10.运算符的优先级

    >>> a = 1
    >>> b = 2
    >>> c = 3
    >>> a or b and c
    1
    

    or 和 and同时在时,and运算符优先级更高

    以下内容仅供参考,还是需要自己验证
    算术运算符 > 比较运算符 > 逻辑运算符

    逻辑运算符中 not > and > or
    推荐采用(),使优先级更加清晰

    相关文章

      网友评论

          本文标题:Python学习(四)--运算符

          本文链接:https://www.haomeiwen.com/subject/ymojmctx.html