优雅的使用python

优雅的使用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更易读,需要不断的探索啊^.^

—————————————— 二更分割线 —————————————

判断None和判断空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值