python中的效率問題

       一直覺得Python是一門非常優美的語言,它那簡潔的語法,有條理的縮進,看起來舒服,寫起來也覺得非常不錯,其在寫程序的時候,要用好python並不是一件容易的事情,當然,用好它是一件非常有趣的事情,會讓事情看起來非常簡潔有效。比如:已知list型對象a = [1,2,3,4,5,6,7,8,9],要求只保留a中除3餘2的數(如:5%3 == 2,則5滿足要求),題最後的結果應該是a = [2,5,8],在這個過程中,數組的長度是發生了變化了,python爲我們提供了非常方便的語法一句話即可解決a = [i for i in a if i % 3 == 2],ok,搞定了,任務完成了,是不是很棒,非常省事,但是這個過程中list中的元素與list的長度都發生了變化,python在給我們帶來這些高效的語法中,這其中的精妙之處是需要挖掘的。

      再比如說定義了一個函數,如:

def foo():
       return "ok"
A = ''',現在要調用foo()10000次,把它的返回值存入A裏面(每次調用把返回值追加在A的結尾),這麼解決,A = (10000 * foo()),好了,搞定了,這樣會有什麼問題?一下子分配10000個“ok",靠,萬一系統沒這麼多空間給你分配,如何?而且這麼做的效率也不高,沒事,python有好的解決方法也能一句話搞定,A = A .join([c for i in xrange(10000)]),搞定裏面涉及到的問題就有點多了,首先是這個xrange,range和它長得比較像,比如說for i in range(10),它一次給分配一個list[0,1,2,3...9],可是xrange它不這麼幹,for i in xrange(10)也生成一個list,但它每次循環只產生一個數加入list這樣它每次的系統開銷會比較小,就好比人吃飯,range呢是一次把一天的飯吃完了,這樣省事,但也可能導致胃脹胃痛,xrange呢,分早中晚三頓吃,這是一個好習慣,既然是好習就要保持,爲了身體健康,多用xrange大笑,再說join,這個函數能把list中的元素以字符串的形式連接起來,join本身也有連接的意思,所以這個很容易能理解。

       這些只是冰山一角而已,在用的過程慢慢發掘與積累吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章