zoukankan      html  css  js  c++  java
  • Python入门学习笔记12:pythonnic补充

      1 # 字典映射来代替switch
      2 
      3 day = 6
      4 
      5 
      6 def get_sunday():
      7     return 'Sunday'
      8 
      9 
     10 def get_monday():
     11     return 'Monday'
     12 
     13 
     14 def get_tuseday():
     15     return 'Tuseday'
     16 
     17 
     18 def get_default():
     19     return 'Unkown'
     20 
     21 
     22 switcher = {
     23     0:get_sunday,
     24     1:get_monday,
     25     2:get_tuseday
     26 }
     27 
     28 #day_name = switcher[day]
     29 day_name = switcher.get(day,get_default)() #若数组中不存在对应的key则展示'Unkown',由于该返回值是一个方法故后加 括号()
     30 print(day_name)
     31 
     32 # 列表推导式(支持列表、set、dict)
     33 # 集合推导式
     34 #列表形式
     35 a = [1,2,3,4,5,6,7,8]
     36 #将列表中的每一项求平方
     37 #方法一:列表推导式
     38 b = [i*i for i in a if i >=5] # i**2 等价于 i*i ; i**3 代表i的三次方 ; if条件可放在循环后
     39 print('b',b) #b [25, 36, 49, 64]
     40 #方法二:map函数
     41 def square(x):
     42     return x ** 2
     43 b1 = map(square, [1, 2, 3, 4, 5])
     44 print('b1',list(b1))#b1 [1, 4, 9, 16, 25]
     45 #发放三:map函数lambada表达式
     46 b2 = map(lambda x: x**2, [1,2,3,4,5])
     47 print('b2',list(b2))#b2 [1, 4, 9, 16, 25]
     48 
     49 """
     50 #多个参数的lambada表达式的写法:
     51     map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10])
     52      
     53     # 结果如下:
     54     [3,7,11,15,19]
     55 """
     56 
     57 #set集合(set也可以被推导)
     58 a1 = {1,2,3,4,5,6,7,8}
     59 b3 = [i*i for i in a if i >=5]
     60 print('b3:',b3)
     61 
     62 # dict字典:列表推导式
     63 students = {
     64     '喜小乐':18,
     65     '石敢当':20,
     66     '横小五':15
     67 }
     68 #列表推导式
     69 b4 = [key for key,value in students.items()]#字段无法被遍历需将字典调用items()方法来用来遍历
     70 print('b4',b4)
     71 #set推导式
     72 b5 = {value:key for key,value in students.items()}#将字典中的key、value颠倒
     73 print('b5',b5)
     74 #元组推导式
     75 b6 = (key for key,value in students.items())
     76 for x in b6:
     77     print('b6',x)
     78 
     79 #课程补充
     80 #None 空  不等于空字符串、不等于空的列表、不等于0、不等于False
     81 #类型,值
     82 
     83 a = ''
     84 b = False
     85 c = []
     86 print(a==None,b==None,c==None,a is None,type(None))#False False False False <class 'NoneType'>
     87 
     88 
     89 def fun():
     90     return None
     91 
     92 a = fun()
     93 a = []
     94 if not a:
     95     print('S')
     96 else:
     97     print('F')
     98 if a is None:
     99     print('S')
    100 else:
    101     print('F')
    102 
    103 #判空推荐写法
    104 
    105 #a不为空时
    106 if a:
    107     pass
    108 #a为空时
    109 if not a:
    110     pass
    111 """
    112 True False 对应关系
    113 
    114 '' [] None 对应False
    115 
    116 自定义对象
    117 
    118 """
    119 
    120 class Test():
    121     def __len__(self):
    122         return 0
    123 class Test1():
    124     def __len__(self):
    125         return 8
    126 class Test2():
    127     pass
    128 class Test3():
    129     def __len__(self):
    130         return '8'
    131 class Test4():
    132     def __len__(self):
    133         return True
    134 
    135 class Test5():
    136     # __bool__() 优先级比较高
    137     def __bool__(self):
    138         print('bool called')
    139         return False
    140     def __len__(self):
    141         print('len called')
    142         return True
    143 test = Test()
    144 if test:
    145     print('S')
    146 if not test:
    147     print('F')
    148 
    149 print(bool(None))
    150 print(bool([]))
    151 print(bool(Test()))
    152 print(bool(Test1()))
    153 print(bool(Test2()))
    154 #print(bool(Test3())) #方法返回值为字符串、浮点型 会报错: TypeError: 'str' object cannot be interpreted as an integer
    155 # False False False True True
    156 print(len(Test4()),bool(Test4())) # 1 True
    157 print(bool(Test5()))# bool called   False
  • 相关阅读:
    JavaScript构造函数学习笔记
    JavaScript面向对象编程学习笔记
    Maven学习--Maven项目目录、Maven坐标
    Maven学习--安装说明
    Watir问题---gem install watir-classic报错: ERROR: Error installing watir-classic: ERROR: Failed to build gem native extension.
    TestLink问题 —图表中文乱码
    TeskLink—增加一种需求类型(业务流程)(version1.9.8)
    Watir问题--LoadError: cannot load such file -- watir-classic
    Watir--Ruby + Watir环境安装
    Watir问题--Selenium::WebDriver::Error::WebDriverError: unexpected response, code=502, content-type="text/html"
  • 原文地址:https://www.cnblogs.com/liuxiaoming123/p/13376372.html
Copyright © 2011-2022 走看看