lambda表達式
python中形如:
lambda parameters: expression
稱為lambda
表達式,用於創建匿名函數,該表達式會產生一個函數對象。
該對象的行為類似於用以下方式定義的函數:
def <lambda>(parameters):
return expression
python中的
lambda
函數可以接受任意數量的參數,但只能有一個表達式。也就是說,lambda
表達式適用於表示內部僅包含1行表達式的函數。那么lambda
表達式的優勢就很明顯了:
- 使用
lambda
表達式可以省去單行函數的定義過程,使代碼更加簡潔;- 適用於不需要多次復用的函數
例:
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
中的項返回一個新的已排序列表。
其中key
與reverse
是兩個可選參數,它們都必須指定為關鍵字參數;
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, 2, 5, 7, 9]
print(sorted(foo))
# > [1, 2, 5, 7, 9]
print(sorted(foo, reverse = True))
# > [9, 7, 5, 2, 1]
print(sorted(foo, key = lambda x: x*-1))
# > [9, 7, 5, 2, 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)]