前言
不得不说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')