我们知道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函数
更多技术资讯可关注:itheimaGZ获取 |
|