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