zoukankan      html  css  js  c++  java
  • day03-Python运维开发基础-(数据类型强转、运算符、逻辑短路、isinstance)

    1. 强制转换成容器数据类型

    # ### 强制类型转换 容器类型数据 (str list tuple set )
    
    var1 = "你好世界"
    var2 = ["陈博文","刘守乱","钟志红","桂晓斌"]
    var3 = ("陈博文","刘守乱","钟志红","桂晓斌")
    var4 = {"陈博文","刘守乱","钟志红","桂晓斌"}
    var5 = 5488
    var6 = {"a":1,"b":2}
    
    # 1.str 强制转换成字符串
    """就是单纯的在原有数据的两边套上引号"""
    res = str(var2)
    res = str(var4)
    res = str(var5)
    print(res , type(res))
    
    # repr 不转义字符,原型化输出 , 可以显示引号
    print(repr(res))
    
    # 2.list 强制转换成列表
    """
    如果是字符串:把每一个字符都当成一个新元素组合在一起,形成新列表
    如果是字典:只保留字典的键
    如果是其他容器:仅仅单纯的在原有数据的两边,套上中括号[]即可
    """
    res = list(var1)
    res = list(var3)
    res = list(var4)
    res = list(var6)
    print(res , type(res))
    
    
    # 3.tuple 强制转换成元组
    """
    如果是字符串:把每一个字符都当成一个新元素组合在一起,形成新元组
    如果是字典:只保留字典的键
    如果是其他容器:仅仅单纯的在原有数据的两边,套上小括号()即可
    """
    res = tuple(var1)
    res = tuple(var2)
    # res = tuple(var5) error
    res = tuple(var6)
    print(res)
    
    # 4.set 强制转换成集合
    """
    集合具有无序的属性:
    如果是字符串:把每一个字符都当成一个新元素组合在一起,形成新集合
    如果是字典:只保留字典的键 
    如果是其他容器:仅仅单纯的在原有数据的两边,套上花括号{}即可
    """
    res = set(var1)
    res = set(var2)
    res = set(var6)
    print(res)
    
    
    
    """
    # 括号里面不加任何值,可以转换出一个当前数据类型的值
    str() list() tuple() set() dict()
    """
    var = dict()
    print(var)
    强制转换成容器类型数据(str list tuple set) 示例代码
    # ### 二级容器: 外面是一个容器类型的数据,里面的元素还是一个容器类型的元素
    
    # 二级列表
    listvar = [1,2,3,4,5,[6,7,8]]
    # 二级元组
    tuplevar = (1,2,3,4,5,(11,12,34),90)
    # 二级集合 Number str tuple
    setvar = {1,2,3,"a","b","c",(5,6,7)}
    # 二级字典
    dictvar = {"a":1 , "b":2 ,"c":{"d":1,"e":2}}
    
    # 四级容器
    container = [1,2,3,4,5,(6,7,8,["a","b","c",{"aa":1,"bb":"王文"}])]
    # (6, 7, 8, ['a', 'b', 'c', {'aa': 1, 'bb': '王文'}])
    res = container[-1]
    print(res)
    # ['a', 'b', 'c', {'aa': 1, 'bb': '王文'}]
    res2 = res[-1]
    print(res2)
    # {'aa': 1, 'bb': '王文'}
    res3 = res2[-1]
    print(res3)
    # 王文
    res4 = res3["bb"]
    print(res4)
    
    # 简写
    res = container[-1][-1][-1]["bb"]
    print(res)
    
    # 等长的二级容器
    container = [(1,2,3,4) , {"a","b","c","d"}]
    container = [ (1,2) , [3,4]]
    
    
    # ### dict 强制转换成字典
    """必须是等长的二级容器,并且里面的元素个数是2个"""
    
    # (1)外面是列表,里面可以是元组或者列表(推荐)
    listvar = [ ("a",1) , ["b",2]]
    dictvar = dict(listvar)
    print(dictvar , type(dictvar))
    
    
    # 语法上可以,但是不推荐,因为集合无序,达不到想要的效果 (不推荐)
    listvar = [ ("a",1) , ["b",2] , {"c",3}]
    dictvar = dict(listvar)
    print(dictvar)
    
    # 字符串作为元素,有一定的局限性,仅限于2个元素才可以(不推荐)
    listvar = [ ("a",1) , ["b",2] , "c3"]
    dictvar = dict(listvar)
    print(dictvar)
    
    # (2)外面是元组,里面可以是元组或者列表(推荐)
    tuplevar = ( ("a",1) , ["b",2] )
    dictvar = dict(tuplevar)
    print(dictvar)
    
    # (3)外面是集合,里面只能放元组
    setvar = { ("a",1),("b",2) }
    dictvar = dict(setvar)
    print(dictvar)
    
    
    # 去掉列表中的所有重复数据
    listvar = [1,2,3,3,4,4,5,6,7,"a","a","b","b","c","c"]
    res = set(listvar)
    print(res,type(res))
    lst = list(res)
    print(lst,type(lst))
    
    # 可以修改元组嵌套的列表中的数据;
    tuplevar = (1,2,3,4,5,6,["a","b","c"])
    lst = tuplevar[-1]
    print(lst)
    lst[2] = "d"
    print(tuplevar)
    强制转换成 字典dict 示例代码

     2. 运算符、比较运算符、赋值运算符、逻辑运算符、身份运算符

    # ### python 运算符
    # (1)算数运算符:  + - * / // % **
    
    var1 = 7
    var2 = 4
    
    # +
    # res = var1 + var2
    # print(res)
    
    # -
    # res = var1 - var2
    # print(res)
    
    # *
    # res = var1 * var2
    # print(res)
    
    # / 结果一定是一个小数
    res = var1 / var2
    res = 8 / 4
    print(res)
    
    # // 地板除
    res = 8 // 4
    # 如果除数和被除数其中有小数,那么结果就是个小数
    res = 8 // 4.0
    print(res)
    
    # % 取余
    res = var1 % var2
    res = 87 % 6
    # res = -7 % 4 # -3 + 4 = 1 
    # res = 7 % -4 #  3 + -4 = -1
    # res = -7 % -4# 如果两边都是符号,就是单纯的在余数的前面套上负号即可
    print(res)
    
    # ** 幂运算
    res = 2 ** 4
    print(res)
    
    
    # (2)比较运算符:  > < >= <= == !=   只会产生两个结果,要么是True真的,要么是False 假的
    
    var1 = 10
    var2 = 8
    # >
    res = var1 > var2
    print(res)
    # <
    res = var1 < var2
    print(res)
    # >=
    res = 5 >= 5
    print(res)
    # <=
    res = 5 <= 5
    print(res)
    
    # == 比较两个值是否相等
    """
    =  代表的是赋值,把右边的值赋值给左边
    == 代表的是比较两个值是否相等,满足返回True ,不满足返回False
    """
    res = 5 == 5
    print(res)
    
    # != 比较两个值是否不相等
    
    res = 5 != 5
    print(res)
    算数与比较 运算符示例代码
    # ### 赋值运算符 = += -= *= /= //= %= **=
    
    # = 
    a = 5
    var1 = 7
    var2 = 8
    # +=
    """var1 = var1 + var2"""
    
    # var1 += var2
    # print(var1)
    
    # -=
    """var1 = var1 - var2"""
    # var1 -= var2
    # print(var1)
    
    # *=
    """var1 = var1 * var2"""
    # var1 *= var2
    # print(var1)
    
    # /=
    """var1 = var1 / var2"""
    # var1 /= var2
    # print(var1)
    
    # //=
    """var1 = var1 // var2"""
    # var1 //= var2
    # print(var1)
    
    # %=
    """var1 = var1 % var2"""
    # var1 %= var2
    # print(var1)
    
    # **=
    var1 = 3
    """var1 = var1 ** var2"""
    var1 **= 2
    print(var1)
    
    # (4)成员运算符:  in 和 not in (针对于容器型数据)
    # str
    """必须是一个连续的片段"""
    strvar = "如果遇到你是一种错,那我宁愿一错再错"
    res = "" in strvar
    res = "一种错" in strvar
    res = "宁再" in strvar
    print(res)
    
    # list tuple set 
    listvar = ["罗总要","主进程","杨马志","肖波","张晓东","是滑清"]
    res = "主进程" in listvar
    
    tuplevar = ("罗总要","主进程","杨马志","肖波","张晓东","是滑清")
    res = "杨马志" not in tuplevar
    
    setvar = {"罗总要","主进程","杨马志","肖波","张晓东","是滑清"}
    res =  "肖波123" not in setvar
    print(res)
    
    # dict 
    """在字典中,in , not in 判断的是字典的键,不是值"""
    dictvar = {"lzy":"应该减肥","zjc":"小心被卖掉","ymz":"非常大气"}
    
    res = "应该减肥" in dictvar
    res = "lzy" in dictvar
    res = "非常大气" not in dictvar
    print(res)
    赋值运算符 示例代码
    # ### 身份运算符  is 和 is not (检测两个数据在内存当中是否是同一个值)
    
    # 整型: -5 ~ 正无穷
    var1 = 90
    var2 = 90
    res = var1 is var2
    print(res)
    
    # 浮点型 非负数
    var1 = 5.89
    var2 = 5.89
    res = var1 is var2
    print(res)
    
    # bool 两个值相同即可
    var1 = True 
    var2 = False
    res = var1 is not var2
    print(res)
    
    # 复数 (实数+虚数 地址永远不相同, 只有虚数的情况例外)
    var1 = 4+3j
    var2 = 4+3j
    res = var1 is var2
    print(res)
    
    # 相同的字符串 和 空元组 地址相同,其他容器类型数据地址都不相同
    var1 = [90,91]
    var2 = [90,91]
    res = var1 is var2
    print(res)
    
    # ### 逻辑运算符
    print("<==========>")
    # and 逻辑与
    """全真则真,一假则假"""
    res = True and True    #
    res = True and False   #
    res = False and False  #
    res = False and True   #
    print(res)
    
    # or  逻辑或
    """一真则真,全假则假"""
    res = True or True   #
    res = True or False  #
    res = False or True  #
    res = False or False #
    print(res)
    
    # not 逻辑非
    res = not True
    res = not False
    print(res)
    
    
    # 逻辑短路 : (不能够改变最终的结果了,后面的代码不执行)
    """
        (1) True or 表达式
        (2) False and 表达式
    """
    True or print(111)   # 不会打印111
    False and print(222) # 不会打印111
    
    res = 5 or 6 # 5
    res = 5 and 6 # 6
    res = not 5 # False
    print(res)
    
    print("<=========>")
    # 逻辑的优先级
    # () > not > and > or
    res = 5 or 6 and 7 # 5 or 7 => 5
    res = (5 or 6) and 7 # 5 and 7  => 7
    res = not (5 or 6) and 7 # not 5 and 7 => False and 7 => False
    print(res)
    
    
    res = 1>2 or 3<4 and 5>6 # False or True and False => False or False => False
    res = 1<2 and 3>5 or 7<6 and 90>100 or 100<2000 # True and False or False and False or True => False or False or True => False or True => True
    print(res)
    
    # 注意点:
    res = True or False and True or False #(这种情况直接短路)
    res = False and True or True and True #(False and 一堆表达式,不能直接判定结果)
    # False or True
    print(res)
    
    # isinstance 判断类型的
    """
    int float bool complex str tuple list set dict
    isinstance(要判断的值,要判断的类型) 返回True真 或者 False假
    
    # 只要有一个类型满足条件,就返回真,否则返回假
    isinstance(要判断的值, (把所有可能的类型塞到元组当中)  )
    """
    
    # 用法一
    strvar = "我好帅"
    res = isinstance(strvar,str)
    print(res)
    
    
    # 用法二
    listvar = ["张晓东","朱金城","石华清"]
    res = isinstance(listvar, (str,int,tuple,list) )
    print(res)
    
    
    
    
    
    container = [1,2,3,4,[5,6,7,[8,9,10,(11,{"a":{"bb":98},"pp":{"d":"bingo"}})]]]
    # ”bingo”
    print(container[-1][-1][-1][-1]["pp"]["d"])
    逻辑与身份运算符 示例代码

    3. 逻辑短路与isinstance 

     

    # 逻辑短路 : (不能够改变最终的结果了,后面的代码不执行)
    """
        (1) True or 表达式
        (2) False and 表达式
    """
    True or print(111)   # 不会打印111
    False and print(222) # 不会打印111
    
    res = 5 or 6 # 5
    res = 5 and 6 # 6
    res = not 5 # False
    print(res)
    
    print("<=========>")
    # 逻辑的优先级
    # () > not > and > or
    res = 5 or 6 and 7 # 5 or 7 => 5
    res = (5 or 6) and 7 # 5 and 7  => 7
    res = not (5 or 6) and 7 # not 5 and 7 => False and 7 => False
    print(res)
    
    
    res = 1>2 or 3<4 and 5>6 # False or True and False => False or False => False
    res = 1<2 and 3>5 or 7<6 and 90>100 or 100<2000 # True and False or False and False or True => False or False or True => False or True => True
    print(res)
    
    # 注意点:
    res = True or False and True or False #(这种情况直接短路)
    res = False and True or True and True #(False and 一堆表达式,不能直接判定结果)
    # False or True
    print(res)
    
    # isinstance 判断类型的
    """
    int float bool complex str tuple list set dict
    isinstance(要判断的值,要判断的类型) 返回True真 或者 False假
    
    # 只要有一个类型满足条件,就返回真,否则返回假
    isinstance(要判断的值, (把所有可能的类型塞到元组当中)  )
    """
    
    # 用法一
    strvar = "我好帅"
    res = isinstance(strvar,str)
    print(res)
    
    
    # 用法二
    listvar = ["张晓东","朱金城","石华清"]
    res = isinstance(listvar, (str,int,tuple,list) )
    print(res)
    
    
    
    
    
    container = [1,2,3,4,[5,6,7,[8,9,10,(11,{"a":{"bb":98},"pp":{"d":"bingo"}})]]]
    # ”bingo”
    print(container[-1][-1][-1][-1]["pp"]["d"])
    逻辑短路与isinstance 示例代码

    day03

  • 相关阅读:
    【BZOJ2553】[BeiJing2011] 禁忌(AC自动机+矩乘)
    自动生成logo的网址
    JS创建对象的方式有几种
    用nodejs和js写增删查模块
    JS一般般的网页重构可以使用Node.js做些什么(转)
    Javascript高级程序设计
    前端书籍小技巧
    【年终总结】2年计划还是要有的,万一实现了呢?(转自叶小钗)
    前端数据结构与算法系列(转)
    node前端自动化
  • 原文地址:https://www.cnblogs.com/reachos/p/12132694.html
Copyright © 2011-2022 走看看