python max,filter,map,reduce,partial函數使用

前言

不得不說python的內置函數設計得非常通用。類似max,min,sort等比較函數,均直接key關鍵字。用起來非常舒服。

MAX函數用法

# -*- coding: UTF-8 -*-
lista = [3,1,2]
print(max(lista)) // 輸出3

listb = [(1, 3), (2, 2), (3, 1)]
print(max(listb, key=lambda x:x[1])) //輸出(1,3)

listc = []
# default關鍵字僅在3.4以後版本支持,當listc爲空時,提供默認值
#print(max(listc, default=-1))

print(max(3,2,4)) //輸出4

filter,map函數用法

lista = [3,1,2]
# 輸出[3, 2]
print(filter(lambda x: x > 1, lista))
# 輸出[9, 1, 4]
print(map(lambda x: x ** 2, lista))

# 求lista 和 listb 元素相加
# 輸出[4, 2, 3]
listb = [1,1,1]
print(map(lambda x, y: x + y, lista, listb))

reduce:
函數原型:def reduce(function, sequence, initial=None)
其中function是一個接受兩個參數的函數。
sequence是iterable對象
initial指定從iterable中第幾個元素開始

示例:
import functools

# 輸出24
# 依次執行: 2 = func(1, 2)
#          6 = func(2, 3)
#          24 = func(6, 4)
print(functools.reduce(lambda x, y: x * y, [1, 2, 3, 4]))


# 輸出24
# 依次執行: 2 = func(2, 1)
#          6 = func(2, 3)
#          30 = func(6, 5)
print(functools.reduce(lambda x, y: x * y, [1, 3, 5], 2))

partial:
partial是一個類對象,它可以通過固定函數的參數來簡化函數調用。

類原型:

class partial(Generic[_T]):
    func = ...  # type: Callable[..., _T]
    args = ...  # type: Tuple[Any, ...]
    keywords = ...  # type: Dict[str, Any]
    def __init__(self, func: Callable[..., _T], *args: Any, **kwargs: Any) -> None: ...
    def __call__(self, *args: Any, **kwargs: Any) -> _T: ...

演示示例:

def partial_func(*args, **kwargs):
    print(args)
    print(kwargs)


# 輸出
# (1, 2, 3)
# {'var1': 'var1', 'var3': '123'}
new_func = functools.partial(partial_func, 1, 2, var1='var1')
new_func(3, var3='123')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章