• Python入门之可变不可变类型、逻辑、成员、身份运算符、


    一、可变不可变类型

      可变类型:值改变,id不变,证明改的是原值,证明原值是可以被改变的
      不可变类型:值改变,id也变了,证明是产生新的值,压根没有改变原值,证明原值是不可以被修改的

    2、验证

    2.1 int是不可变类型

    x=10
    print(id(x))
    x=11 # 产生新值
    print(id(x))
    

     

    2.2 float是不可变类型

    x=3.1
    print(id(x))
    x=3.2
    print(id(x))
    

     

    2.3 str是不可变类型

    x="abc"
    print(id(x))
    x='aaa'
    print(id(x))
    

      小结:int、float、str都被设计成了不可分割的整体,不能够被改变

       

    2.4 list是可变类型

    l=['aaa','bbb','ccc']
    print(id(l))
    l[0]='AAA'
    print(l)
    print(id(l))
    

    2.5 dict

    dic={'k1':111,'k2':222}
    print(id(dic))
    dic['k1']=3333333333
    
    print(id(dic))
    

    2.6 bool不可变

      关于字典补充:
      定义:{}内用逗号分隔开多key:value,
       其中value可以是任意类型
       但是key必须是不可变类型

    dic={
        'k1':111,
        'k2':3.1,
        'k3':[333,],
        'k4':{'name':'egon'}
    }
    dic={
        2222:111,
        3.3:3.1,
        'k3':[333,],
        'k4':{'name':'egon'}
    }
    print(dic[3.3])
    dic={[1,2,3]:33333333}
    dic={{'a':1}:33333333}
    

     


    2、条件

    第一大类:显式布尔值

    2.1 条件可以是:比较运算符

    age = 18
    print(age > 16)  # 条件判断之后会得到一个布尔值
    

     

    2.1 条件可以是:True、False

    is_beautiful=True
    print(is_beautiful)
    

    第二大类:隐式布尔值,所有的值都可以当成条件去用

       其中0、None、空(空字符串、空列表、空字典)------->代表的布尔值为False,其余都为真

      


    三、逻辑运算符

    1、not、and、or的基本使用

      not:就是把紧跟其后的那个条件结果取反(not与紧跟其后的那个条件是一个不可分割的整体)

    print(not 16 > 13)
    print(not True)
    print(not False)
    print(not 10)
    print(not 0)
    print(not None)
    print(not '')
    

      

      and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为真

    print(True and 10 > 3)
    print(True and 10 > 3 and 10 and 0) # 条件全为真,最终结果才为True
    print( 10 > 3 and 10 and 0 and 1 > 3 and 4 == 4 and 3 != 3)  # 偷懒原则
    

     

      or:逻辑或,or用来链接左右两个条件,两个条件但凡有一个为True,最终结果就为True, 两个条件都为False的情况下,最终结果才为False

    print(3 > 2 or 0)
    print(3 > 4 or False or 3 != 2 or 3 > 2 or True) # 偷懒原则
    

     

    2、优先级not>and>or

      如果单独就只是一串and链接,或者说单独就只是一串or链接,按照从左到右的顺讯依次运算即可(偷懒原则)如果是混用,则需要考虑优先级了

    res=3>4 and not 4>3 or 1==3 and 'x' == 'x' or 3 >3
    print(res)
    
    res=(3>4 and (not 4>3)) or (1==3 and 'x' == 'x') or 3 >3
    print(res)
    

     


    四、成员运算符

    print("egon" in "hello egon") # 判断一个字符串是否存在于一个大字符串中
    print("e" in "hello egon") # 判断一个字符串是否存在于一个大字符串中
    print(111 in [111,222,33]) # 判断元素是否存在于列表
    
    # 判断key是否存在于字典
    print(111 in {"k1":111,'k2':222})
    print("k1" in {"k1":111,'k2':222})
    
    # not in
    print("egon" not in "hello egon") # 推荐使用
    print(not "egon" in "hello egon") # 逻辑同上,但语义不明确,不推荐
    

     


    五、身份运算符

      is : 判断的是id是否相等

  • 相关阅读:
    ACMer第7天Falling Ants
    贪心初步-FatMouse' Trade
    贪心初步-A
    ACM集训第二天
    asp.net中遍历套用母版页的页面的控件
    a 标签中调用js的几种方法
    笔记
    html控件和web控件
    ASP.NET中GUID类
    (转)常见邮件服务器(接收服务器和发送邮件服务器)地址
  • 原文地址:https://www.cnblogs.com/Lance-WJ/p/12432983.html
Copyright © 2020-2023  润新知