1. 程式人生 > 程式設計 >詳解python中的lambda與sorted函式

詳解python中的lambda與sorted函式

lambda表示式

python中形如:

lambda parameters: expression

稱為lambda表示式,用於建立匿名函式,該表示式會產生一個函式物件。

該物件的行為類似於用以下方式定義的函式:

def <lambda>(parameters):
	return expression

python中的lambda函式可以接受任意數量的引數,但只能有一個表示式。也就是說,lambda表示式適用於表示內部僅包含1行表示式的函式。那麼lambda表示式的優勢就很明顯了:

  1. 使用lambda表示式可以省去單行函式的定義過程,使程式碼更加簡潔;
  2. 適用於不需要多次複用的函式

例:

y = lambda x: x*x
print(y(3))
> 9
fx = lambda x,y,z: x+y+z
print(fx(3,4,5))
> 12

sorted()

python3.x中sorted函式:

sorted(iterable,*,key=None,reverse=False)

sorted函式會根據iterable中的項返回一個新的已排序列表。

其中keyreverse是兩個可選引數,它們都必須指定為關鍵字引數;

key:指定帶有單個引數的函式,用於從iterable的每個元素中提取用於比較的鍵,預設為None,即直接比較元素;

reverse:為一個布林值,用來指定排序規則,預設為False(升序)。

python2的sorted函式中還有一個引數cmp,python3的sorted中已經沒有這個引數了。

與list.sort()方法不同的是,sorted()是有返回值的,而list.sort()的返回值為None;並且list.sort()只能對list進行排序,而sorted()可以接收任何的iterable

例:

# list
foo = [5,7,2,9,1]
bzz = sorted(foo)
print(bzz)
# > [1,5,9]

print(sorted(foo))
# > [1,9]

print(sorted(foo,reverse = True))
# > [9,1]

print(sorted(foo,key = lambda x: x*-1))
# > [9,1]

# dict
bar = {'java': 14,'c': 16,'python': 9,'cpp': 6,'csharp': 4}
print(sorted(bar))
# > ['c','cpp','csharp','java','python']

print(sorted(bar.items(),key = lambda kv: kv[1],reverse = True))
# > [('c',16),('java',14),('python',9),('cpp',6),('csharp',4)]

以上就是詳解python中的lambda與sorted函式的詳細內容,更多關於python lambda與sorted函式的資料請關注我們其它相關文章!