我们知道Python这门语言在运行速度上已经败给了许多别的语言(比如C, C++, Java, Golang....).但从一个开发者的角度来看Python是我最喜欢的语言,很大一部分原因在于其语法简单(其实是我比较懒),还有很多很sao的操作,可以大大提高我们的敲代码的效率.我们通常叫这种sao操作为pythonic.
一 交换两个变量
传统写法:
temp = a
a = b
b = temp
pythonic写法:
a, b = b, a
二 枚举enumerate
传统写法:
alist = ["老胡", "老王", "老李", "老赵"]
aDict = {}
for i in range(len(alist)):
aDict[alist] = i
pythonic写法:
alist = ["老胡", "老王", "老李", "老赵"]
aDict = {}
for index, item in enumerate(alist):
aDict[item] = index
三 推导式
Python中的推导式分为三种列表推导式,字典推导式,集合推导式
列表推导式:
evenList = [i for i in range(0,101) if i % 2 == 0]
字典推导式:
ADict = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
BDict = {value: key for key, value in ADict.items()}
集合推导式和列表一样
四 lambda表达式
所谓lambda表达式就是匿名函数,我们为什么要使用匿名函数呢?有些时候我们想要使用一个函数但是整个程序中只需要使用这一次,这时候使用lambda表达式无疑最方便了
设想一个场景,有一个列表里面存放着一对对的元组,现在要按元组的第二个元素对该列表进行排序
传统方法:
aList = [(2, 3), (1, 2), (4, 5), (7, 4)]
def sortKey(x):
return x[1]
aList.sort(key=sortKey)
print(aList)
pythonic:
aList = [(2, 3), (1, 2), (4, 5), (7, 4)]
aList.sort(key=lambda x: x[1])
五 使用装饰器
def doExtraJob(func):
def wrap():
func()
print("****do extra job****")
return wrap
@doExtraJob
def partA():
print("----do A job----")
@doExtraJob
def partB():
print("----do B job----")
@doExtraJob
def partC():
print("----do C job----")
if __name__ == '__main__':
partA()
partB()
partC()
六 else语句
大部分人只知道else语句和if语句一起使用,但是你们知道吗else语句也可以和for语句,while语句,try语句一起使用
设想一个场景,你在对一个内部数据未知的列表进行循环时(不论是for还是while),你设置了一个遇到偶数就break的语句,倘若数组里不含偶数就输出奇数列表字样.
传统方法:
aList = [1, 3, 5, 7, 9]
flag = True
for i in aList:
if i % 2 == 0:
flag = False
break
if flag:
print("奇数列表")
pythonic:
aList = [1, 3, 5, 7, 9]
for i in aList:
if i % 2 == 0:
break
else:
print("奇数列表")
七 多用Python内置函数
map函数、.filter函数、reduce函数
|
|