###高階函數 ####filter 這個函數的功能就是對一個序列進行過濾,只保存須要的值python
好比咱們對一個組合進行篩選只保留偶數就能夠採用下面的方法express
def is_odd(n): if n%2==0: return True else: return False L=list(filter(is_odd,range(1,10))) print(L)
若是咱們要對一個組合進行過濾只保存其中的迴文數函數
所謂的迴文是指該數逆序後與自身相同性能
如1111,1221,3443code
def is_palindrome(n): return str(n)==str(n)[::-1] output = filter(is_palindrome, range(1, 10000)) print(list(output))
####sorted 內置排序函數對象
對一個數列進行排序排序
sorted([5, 2, 3, 1, 4])字符串
輸出[1, 2, 3, 4, 5]io
在list的方法中一樣提供了一個sort()函數,不過相對於該函數而言sorted更加的強大,他不只支持原始的數列還支持其餘更爲複雜的對象。 好比class
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]
對字符串進行比對
>>>sorted(["This","is","a","python","test"],key=str.lower)
['a', 'is', 'python', 'test', 'This']
其中key=str.lower,對該排序不進行大小寫對比 ####匿名函數 python經過使用lambda來創造匿名函數。所謂匿名就是指不用經過def的標準來進行定義一個函數。 這種語句的目的是因爲性能的緣由,在調用時繞過函數的棧分配。其語法是:
lambda [arg1[, arg2, ... argN]]: expression
其中的函數下可選的,若是使用參數可用於表示式之中。 下面的例子是建立一上兩個數相加的匿名函數
>>> sum = lambda x, y : x + y
>>> sum(3,4) 輸出的是7
當你兩個數相加的時候就能夠直接調用 sum這個匿名函數。
另外一個更爲複雜的匿名函數/
# 使用def定義的函數 def add( x, y ): return x + y # 使用lambda的表達式 lambda x, y: x + y # lambda也容許有默認值和使用變長參數 lambda x, y = 2: x + y lambda *z: z # 調用lambda函數 >>> a = lambda x, y: x + y >>> a( 1, 3 ) 4 >>> b = lambda x, y = 2: x + y >>> b( 1 ) 3 >>> b( 1, 3 ) 4 >>> c = lambda *z: z >>> c( 10, 'test') (10, 'test')
使用匿名函數能夠使程序變的更爲簡潔和優雅
裝飾器
其實對於python而言其中方法也只是一個對象,這是否是與面向對象的概念很吻合,萬物皆對象