python 函數筆記

###高階函數 ####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而言其中方法也只是一個對象,這是否是與面向對象的概念很吻合,萬物皆對象

相關文章
相關標籤/搜索