高阶函数
实参是一个函数名
-函数的返回值是一个函数
函数本身可以复制给变量,变量也可以指向函数
def fun(x,y,f):
return f(x), f(y)
print(fun(10,-10,abs))
内置的高阶函数
map(): 接受两个参数,一个是函数,一个是序列
map将传入的函数依次作用到序列的每个元素,将结果作为新的序列返回
print(list(map(abs, [-1, -2, -3])))
reduce:把函数作用在一个序列上,接受两个参数,reduce把结果和序列的下一个元素做累积计算
reduce(f,[1,2,3])=f(f(1,2),3)
from functools import reduce
filter过滤函数
接收一个函数一个序列
filter把传入的函数一次作用于每个元素
根据返回值是True还是False决定保留还是丢弃该元素
def isodd(num):
if num % 2 == 0:
return True
else:
return False
print(list(filter(isodd,range(101))))
sorted(序列,key=函数名)
默认sort和sorted都是由小到大排序
反转reverse=True
li = [2, 4, 1]
li = sorted(li, reverse=True)
将0移动到最后
count = int(input())
number = [int(input()) for i in range(count)]
# pos = 0
def sortNumber(x):
# global pos
# if x == 0:
# return count+1
# else:
# pos += 1
# return pos
if x == 0:
return 1
else:
return 0
number = sorted(number, key=sortNumber)
for n in number:
print(n)
匿名函数:关键字为lambda,冒号前面是形参,后面则是返回值,判断条件
print(lambda *args, **kwargs: (args, kwargs))
print(lambda x, y: x+y)
a = [4, 0, 2, 0, 7]
print(sorted(a, key=lambda x:x==0))