优雅的使用python,让自己的code更pythonic
enumerate 让list遍历更加优雅
1 2 3 4 5
| test_list = ['龙母','雪诺','提里昂','山姆'] count = 0 for name in test_list: print('%s的序号是: %d' %(name, count)) count += 1
|
龙母的序号是: 0
雪诺的序号是: 1
提里昂的序号是: 2
山姆的序号是: 3
1
| test_list = ['龙母','雪诺','提里%s
|
龙母的序号是: 0
雪诺的序号是: 1
提里昂的序号是: 2
山姆的序号是: 3
通过上面两个例子可以看到,在对list进行遍历的时候,使用enumerate可以直接获得对应值的索引,不需要再定义变量count进行计数
zip让多个list同时遍历更加优雅
1 2 3 4
| list1 = ['罗柏','萨莎','艾莉亚','布兰','雪诺'] list2 = ['灰风','淑女','娜梅利亚','夏天','白灵'] for stake,wolf in zip(list1,list2): print("%s的小狼叫做%s" %(stake, wolf))
|
罗柏的小狼叫做灰风
萨莎的小狼叫做淑女
艾莉亚的小狼叫做娜梅利亚
布兰的小狼叫做夏天
雪诺的小狼叫做白灵
不仅对两个list可以哦,对三个list也同样是有效的
1 2 3 4 5
| list1 = ['罗柏','萨莎','艾莉亚','布兰','雪诺'] list2 = ['灰风','淑女','娜梅利亚','夏天','白灵'] list3 = ['消逝','消逝','改变','消逝','啥也不知道'] for stake,wolf,state in zip(list1,list2,list3): print("%s的小狼%s现在已经%s" %(stake, wolf,state))
|
罗柏的小狼灰风现在已经消逝
萨莎的小狼淑女现在已经消逝
艾莉亚的小狼娜梅利亚现在已经改变
布兰的小狼夏天现在已经消逝
雪诺的小狼白灵现在已经啥也不知道
有了zip你就不再需要傻傻的使用不那么简洁的方式进行遍历了
swap变量拒绝第三者
1 2 3 4 5 6 7 8 9
| x = 1 y = 2 def swap(a,b): print('Before swap a is %d, b is %d' % (a, b)) temp = a a = b b = temp print('After swap a is %d, b is %d' % (a, b)) swap(x,y)
|
Before swap a is 1, b is 2
After swap a is 2, b is 1
1 2 3 4 5 6 7
| x = 1 b = 2 def swap(a,b): print('Before swap a is %d, b is %d' % (a, b)) a,b = b,a print('After swap a is %d, b is %d' % (a, b)) swap(x,y)
|
Before swap a is 1, b is 2
After swap a is 2, b is 1
这个trick更像是一条赋值语句,可以看成是对变量的重新赋值,同zip一样,这个trick对多个变量也同样适用
1 2 3 4
| x,y,z = 1,2,3 print("Before swap x=%d,y=%d,z=%d" %(x,y,z)) x,y,z = z,x,y print("After swap x=%d,y=%d,z=%d" %(x,y,z))
|
Before swap x=1,y=2,z=3
After swap x=3,y=1,z=2
dictionary的get替代缺失值的判断
一般的实现方式
1 2 3 4 5 6
| statke_house = {'罗柏':'灰风','萨莎':'淑女','艾莉亚':'娜梅利亚','布兰':'夏天','雪诺':'百灵'} if '瑞肯' in statke_house: statke_house['瑞肯'] = '毛毛狗' print('导演能不能给我加点戏~') else: print('存在感还能再低一点么~')
|
存在感还能再低一点么~
简洁的实现方式
1 2 3
| statke_house = {'罗柏':'灰风','萨莎':'淑女','艾莉亚':'娜梅利亚','布兰':'夏天','雪诺':'百灵'} result = statke_house.get('瑞肯', '我果然是捡来的') print('瑞肯的内心: {}' .format(result))
|
瑞肯的内心: 我果然是捡来的
这个tip只不过是用了dictionary.get()的一个default赋值参数,所以类似像这样的小东东在python还有很多
如何把python用的更优雅,让code更易读,需要不断的探索啊^.^
—————————————— 二更分割线 —————————————
判断None和判断空
上一篇:线性回归的三种比对方式
下一篇:在路上