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')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章