python箴言_Python高效率编程的8条箴言
一團網資訊
一團資訊 > python > Python高效率編程的8條箴言
Python高效率編程的8條箴言
2018-05-19 10:37:54 ??? 發布者:來源網絡
Python作為一門動態語言,提供了很多語法糖,有助于我們以很短的代碼實現復雜的功能。另一方面,Python的歷史悠久,積累了大量高效易用的庫,基本上常見的任務都有對應的工具庫。善用Python的語言特性,我們可以寫出Pythonic的代碼,下面探討一下如何寫出高效率的Python代碼
1.使用lambda表達式
lambda:這是Python支持一種有趣的語法,它允許你快速定義單行的最小函數,類似與C語言中的宏,這些叫做lambda的函數,是從LISP借用來的,可以用在任何需要函數的地方:
>>> g = lambda x: x * 2
>>> g(3)
6
>>> (lambda x: x * 2)(3) 6
2.使用filter過濾list和dict
(function, sequence):對sequence中的item依次執行function(item),將執行結果為True的item組成一個List/String/Tuple(取決于sequence的類型)返回: >>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a'
>>> filter(f, abcdef)
'bcdef'
3. 強大的map reduce函數
map(function, sequence) :對sequence中的item依次執行function(item),見執行結果組成一個List返回:
>>> def cube(x): return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def cube(x) : return x + x
...
>>> map(cube , abcde)
['aa', 'bb', 'cc', 'dd', 'ee']
另外map也支持多個sequence,這就要求function也支持相應數量的參數輸入:
>>> def add(x, y): return x+y
>>> map(add, range(8), range(8))
[0, 2, 4, 6, 8, 10, 12, 14]
reduce(function, sequence, starting_value):對sequence中的item順序迭代調用function,如果有starting_value,還可以作為初始值調用,例如可以用來對List求和:
>>> def add(x,y): return x + y
>>> reduce(add, range(1, 11))
55 (注:1+2+3+4+5+6+7+8+9+10)
4. 變量交換不需要使用臨時變量
>>>a=1 >>>b=2 >>>a, b = b, a
5. 靈活使用生成器yield,讓代碼更簡潔,優雅
生成器提供了一個更方便的產生迭代器的方式 代碼更為簡潔,優雅 充分利用了延遲評估的特性,僅在需要時才產生相應的元素,而不是一次產生所有元素,節省了內存,提高了效率 使得協同程序更加容易實現,協同程序是有多個近入點,可以恢復掛起的函數。實際上,python的協程相關的庫例如greenlet等就是基于yield實現的。 使用yield寫的斐波那契函數,簡潔吧
>>> def fib(n):
... a = b = 1
... for i in range(n):
... yield a
... a,b = b, a+b
...
>>> c = fib(10)
>>> c.next()
1
>>> c.next()
1
>>> c.next()
2
>>> c.next()
3
>>> c.next()
5
6. 靈活使用list,set, deque, array優化性能
7.靈活使用sort,sorted進行排序 sort只能對列表進行排序,不會改變原來的列表 sorted可以對任何迭代器進行排序,例如字典dict,元組,多維list等
>>> from operator import itemgetter
>>> gameresult = [['jim',96,'A'],['Eddy',99,'A'],['Cindy',87,'B'], ['Lucy', 76, 'C']]
>>> sorted(gameresult, key=itemgetter(2,1))
[['jim', 96, 'A'], ['Eddy', 99, 'A'], ['Cindy', 87, 'B'], ['Lucy', 76, 'C']]
8. 使用python標準庫,這塊內容太多,不展開了 常見的庫有requests, jsonlib, pandas,argparse等
[ 責任編輯:來源網絡 ]
總結
以上是生活随笔為你收集整理的python箴言_Python高效率编程的8条箴言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot 3.0最低版本要求
- 下一篇: 用python当壁纸_使用Python脚