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