date: 2019-09-06
我使用的Python版本为3.7,没有装配环境的同学可以到下方链接查看教程。
在Python中,函数名其实就是变量名,讲起来可能有点绕,直接看例子理解了就没问题了
print(abs(-9))
# 9
func = abs
print(func(-8))
# 8
abs = len
print(abs([1, 2, 3]))
# 3
abs是Python中求绝对值的函数,最后它变成了求元素个数的函数,这说明在Python中函数名其实就是变量名,它只是指向了一段代码而已
所以,既然函数名就是变量名,那么在Python中,函数自然可以当成参数进行传递
接下来就介绍几个比较常用的高阶函数,以函数为参数、返回值。函数是对某种功能的抽象,高阶函数则是更高一级的抽象。
这几个高阶函数的功能对于没有接触过这一概念的初学者来说可能会稍微有点难以理解,不用急,看一下例子就可以很快速地学会。
map(func, data)
以下是示例:
itr = map(abs, [0, -9, 3])
print(list(itr))
# [0, 9, 3]
新的list中的元素与data一一对应
reduce(func, data, init)
以下是示例:
from functools import reduce
def add(x, y):
return x + y
print(reduce(add, (0, -9, 3)))
# -6
print(reduce(add, [0, -9, 3], 10))
# 4
在Python高级版本中该函数被放在了functools中,更早的版本不需要引入functools
filter(func, data)
以下是示例:
def is_odd(x):
return x % 2 == 1
itr = filter(is_odd, (1, 2, 3, 4, 5))
print(list(itr))
# [1, 3, 5]
这个函数在Python2和Python3中差别较大,两种都会列出
Python2: sorted(data, cmp)
以下是示例:
print sorted([0, -9, 3], lambda x, y: y-x)
Python3: sorted(data, key, reverse)
以下是示例:
l1 = [(‘b‘,3), (‘c‘,1), (‘a‘,4), (‘d‘,2)]
itr1 = sorted(l1, key = lambda x: x[0])
itr2 = sorted(l1, key = lambda x: x[1], reverse = True)
print(list(itr1))
# [(‘a‘, 4), (‘b‘, 3), (‘c‘, 1), (‘d‘, 2)]
print(list(itr2))
# [(‘a‘, 4), (‘b‘, 3), (‘d‘, 2), (‘c‘, 1)]
分别以元组中的第一个元素升序排序(默认)和元组中的第二个元素降序排序(反转)
原文:https://www.cnblogs.com/wilfredshen/p/12853889.html