zoukankan      html  css  js  c++  java
  • 【2020Python修炼记6】Python语法入门—运算符

     

    1、算数运算符(加减乘除 一般是用于数字)

    +
    字符串+字符串
    列表+列表
    字典+字典
    
    /// 地板除,只取整数部分(不会进行四舍五入)
    % 相除取余
    ** 取幂
    print(10/3)
    print(10//3)
    print(10 % 3)  # 10 的三次方
     

    2、比较运算符

    ===
    
    (了解 大于小于 的其他用处)
    字符串也可比较大小(逐一比较每个字符的ASCII码值)
    列表也可按照位置 逐一比较大小

     

    3、赋值运算符

    (1)  = 增量
        age = 18
        age += 3   # age = age + 3
        print(age)
    
        year = 20
        year -= 3
        print(year)
    
    (2)链式赋值
        x=y=z=10
        print(x,y,z)
        print(id(x),id(y),id(z))
    
    (3)交叉赋值
    一般思路
    m=10
    n=2
    print(m,n)
    
    temp = m
    m=n
    n=temp
    print(m,n)
    
    交叉赋值,一句搞定  m,n = n,m
    m=10
    n=2
    m,n = n,m
    print(m,n)
    
    (4) 解压赋值
    一个包,里面有很多个值-----列表,字典,字符串
    字符串、字典、元组、集合类型都支持解压赋值
    
    常规取值方式---列表
    money = [11,22,33,44,55]
    res1 = money[0]
    res2 = money[1]
    res3 = money[2]
    res4 = money[3]
    res5 = money[4]
    
    -列表解压取值
    money = [11,22,33,44,55]
    --取全部的值(变量名的个数需要与“压缩包”里的值的个数一致,不能多也不能少)
    res1,res2,res3,res4,res5 = money
    
    --取前两个值  将其余不需要的值 赋值给—— _ (接收一个想要废弃的变量) *_ (接收多个想要废弃的变量)
    res1,res2,*_ = money
    
    --取后两个值
    *_,res4,res5 = money
    
    --取前一个和最后一个值
    res1,*_,res5 = money
    
    -字典解压取值
    dic = {'name':'cc','age':18,'hobby':'reading'}
    x1,x2,x3 = dic # 获取字典的key,
    print(dic[x1],dic[x2],dic[x3])  # 利用字典的key,取出字典里对应的值

     

    4、逻辑运算符号

    能辨出真假的两个量 之间进行比较,判断真假
    not  and  or
    
    --布尔值
        --显式布尔值 —— 一眼辨真假
            比较运算
            True False
        (1)比较运算的结果
        print(10 > 3)
        print(10 == 3)
        (2)变量值直接就是True或False
        tag = True
    
        --隐式布尔值 —— 表面上看上去是一种值,在底层会被解释器转换成True或False
           0、None、空对应的布尔值为False,其余值对应的布尔值均为True
    
    
    
    --三大逻辑运算符——用于连接多个条件;
        not  and  or
        --not 条件         --对 条件 进行 取反
    
        --条件1 and 条件2  --and 连接左右两个条件,必须左右都为True,结果才为真。一假则假,真真才真
    
        --条件1 or 条件2   -- or 连接左右两个条件,必须左右都为False,结果才为假。假假才假,一真则真
    
    
    
    --优先级    not > and > or
        开发过程中,常用括号来划分优先级(可以打破 not > and > or 的优先级(括号的优先级更高))。
        如果没有括号,也可以自己加括号,先以and为单位,将and左右的条件,一并括起来,然后按照 not > and > or 的优先级开始逻辑运算,同时使用 短路运算
    
        (1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割
    
        (2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可
    
        (3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
    
    
    --短路运算(偷懒原则)
    逻辑运算的结果一旦可以确定,那么就以当前处 计算到的值作为最终结果返回
    (在判断or左右的条件时,如果全真取真(或者全假取假),就近原则取值)
    
    eg:
    1\
    >>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4
    我们用括号来明确一下优先级
    >>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4
    短路:       0      ''            'abc'
                假     假              真
    
    返回:                            'abc'
    
    2\
    print(1 or 3 and 4)
    print(1 and 0 or 0 and 3)
    print(0 and 3 and 1)
    print(1 and 2 or 1)
    print(-31 and 2 or 1 or 4)
    print(33 or False and 1 or 5)
    
    输出结果:
    1
    0
    0
    2
    2
    33

     

    5、成员运算符

    in 
    not in 
    
    
    >>> not 'lili' in ['jack','tom','robin']
    True
    # 推荐使用第二种
    >>> 'lili' not in ['jack','tom','robin']
    True

     

    6、身份运算符

    # 比较 id
    is
    is not
    
    # ==双等号比较的是value是否相等,而is比较的是id是否相等
    
    #1. id相同,内存地址必定相同,意味着type和value必定相同
    #2. value相同type肯定相同,但id可能不同,如下
    
    >>> x='Info Tony:18'
    >>> y='Info Tony:18'
    >>> id(x),id(y) # x与y的id不同,但是二者的值相同
    (4327422640, 4327422256)
    
    
    >>> x == y # 等号比较的是value
    True
    >>> type(x),type(y) # 值相同type肯定相同
    (<class 'str'>, <class 'str'>)
    >>> x is y # is比较的是id,x与y的值相等但id可以不同
    False

     

     参考:

    https://zhuanlan.zhihu.com/p/108684774

     

  • 相关阅读:
    C Language Study
    html学习笔记五
    [CS]C#操作word
    bzoj2502 清理雪道
    Android Studio怎样查看资源或者函数在哪些类中被引用
    jvm载入过程
    poj2513(无向图判欧拉路)
    7 天玩转 ASP.NET MVC — 第 2 天
    从头认识java-18.2 主要的线程机制(7)join
    启动MFC程序的时候报错:0xC0000005: 读取位置 0x00000000 时发生访问冲突
  • 原文地址:https://www.cnblogs.com/bigorangecc/p/12425624.html
Copyright © 2011-2022 走看看