如何讓Python簡潔高效


在這里我將搜集一些神奇的Python代碼,希望能不斷更新。。。


1. List Comprehensions

使用list comprehension可以杜絕掉50%以上的for循環,后者的效率極其低下(可以看看C源碼的實現),而且不夠緊湊。

(1) Python官方的例子:

>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x !=y]

運行結果得到:[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

(2) list的反轉:lis[::-1]

(3) 找n以內的質數:

>>> filter(lambda number: all(number%x for x in range(2, math.sqrt(prime))), range(2,n))

(4) 凱撒密碼:對於一個字符串,每個字母右移n位加密。

code = ''.join([chr((ord(ch)+n-97)%26+97) if ord('a')<=ord(ch)<=ord('z') else ch for ch in str])

 

2. Python的動態性

Python完爆C++一向自豪的泛型編程,模板編程,舉例如下:

def build(type, value):
     return type(value)    

 然后可以就可以build(int,0)了……是不是比C++簡練多了?更牛逼的:

def impose(func, value):
    return func(value)

def anyfunc(value):
    return value*value

print impose(anyfunc, 3) # return 9, Python 2.7

所以,在Python里類型、函數什么的全部都可以看做是操作對象(第一個例子顯示了對數據類型的操作,第二個是對函數的操作)。以上所有這些Python的特性,你可能說我用C實現一個一樣的就好了。誠然,你可以在C里一個個寫出來自己喜歡的特性,但是你寫到后面你會發現你只是重新發明了Python,然后拿C寫了一個解釋器,而且實現得更爛而已。Please! Don't re-invent the wheel.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM