import random
from functools import reduce
#高阶函数,就是一个函数可以接收另一个函数作为参数的函数,scala与之类似
#定义普通函数,自动生成列表
def getList():
hList = list(range(5))
return [key * random.randint(0,3) for key in hList] #生成随机数
#定义普通函数,求不同列表中最大并集
def getMaxSet(listA,listB):
setA = set(listA) #转为set
setB = set(listB)
setAll = setA | setB #求并集
return list(setAll)#转为list
#定义高阶函数
def highFunction(listA,listB,getMaxSet):
return getMaxSet(listA,listB)
listA = getList()
print(listA)
listB = getList()
print(listB)
#调用高阶函数
values = highFunction(listA,listB,getMaxSet)
print(values)
#Python内嵌的高阶函数map,reduce.filter,sorted.
#map(f,Iterable):f;要执行的操作,Iterable:可循环
def mapF(arg):
return (arg,1)
maps = map(mapF, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print(list(maps))
#reduce(f,Iterable):f;要执行的操作,Iterable:可循环
def reduceF(arg1,arg2):
return arg1 + arg2
reduces = reduce(reduceF, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print(reduces)
#filter(f,Iterable)
#strip()用于移除字符串头尾指定的字符(默认为空格或换行符)
def del_empty(s):
return s and s.strip()#异常:没有实现去除空格的功能
filterList = list(filter(del_empty, [” a”, “”, “b “, None, “v”, ” “]))
print(filterList)
#基础sort()
print(sorted([36, 5, -12, 9, -21])) #数字型按大小
print(sorted([“36”, “5”, “-12”, “9”, “-21”])) #字符串按ASCII码
#进阶
print(sorted([36, 5, -12, 9, -21], key=abs))#先取绝对值,再排序(不影响原数据)
print(sorted([‘bob’, ‘about’, ‘Zoo’, ‘Credit’], key=str.lower, reverse=True)) #先转成小写,按转置排序(不影响原数据)
测试结果:
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/13014.html