高阶函数
Posted mylove-821717420
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高阶函数相关的知识,希望对你有一定的参考价值。
17.01python语言,比较python2与python3的区别
17.02python语言基础(高阶函数----map)
定义:
map():会根据提供的函数对指定的序列做映射
格式:
map(function,iterable)
function---->函数,两个参数----->返回值是一个新的列表
iterable---->一个或多个序列
python2:返回列表
python3:返回的是迭代器
map:使用案例:
a = (1,2,3,4,5)
b = [1,2,3,4,5]
c = "xiaoming"
la = map(str,a)
lb = map(str,b)
lc = map(str,c)
print(la)
print(list(la))
print(list(lb))
print(list(lc))
输出结果:
<map object at 0x0000026DD7ECC828>
[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]
[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘]
[‘x‘, ‘i‘, ‘a‘, ‘o‘, ‘m‘, ‘i‘, ‘n‘, ‘g‘]
练习:将单个字符转换为对应的字面量的整数
def chr_int(chr):
return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7}[chr]
list01 = ["1","3","5"]
result = map(chr_int,list01)
print(result)
print(type(result))
print(list(result))
输出结果:
<map object at 0x000002207DB8CDD8>
<class ‘map‘>
[1, 3, 5]
案例:
将整数元素的序列,转化为字符串类型
[1,2,3,4]------>["1","2","3","4"]
result = map(str,[1,2,3,4])
list02 = list(result)
print(list02)
也可以写成:
print(list(map(str,[1,2,3,4])))
结果:
[‘1‘, ‘2‘, ‘3‘, ‘4‘]
17.03python语言基础(高阶函数---reduce)
定义:
reduce()函数会对参数中的元素进行累积
格式:
reduce(function,iterable[,initializer])
function:函数,有两个参数
iterable:可迭代的对象
initializer:可选,初始化参数
返回值:返回函数计算的结果。
两个数求和:
from functools import reduce
def add_num(a,b):
return a + b
result = reduce(add_num,[1,2,3,6,9])
print(result)
print(reduce(add_num,range(101)))
输出结果:
21
5050
方式二:
from functools import reduce
add_num = lambda a,b:a+b
result = reduce(add_num,(1,2,5,8,9))
print(result)
也可以写成:
print(reduce(lambda a,b:a+b,(1,2,5,8,9)))
返回结果:
25
25
注意:
一个函数作用于另一个序列傻瓜,该函数必须接受两个参数,
reduce把结果和系列的下一个元素进行计算,
返回值:计算后的结果
17.04python语言基础(高阶函数----filter)
定义:
filter()函数:
用于过滤序列,过滤不符合条件的元素,返回由符合条件的元素组成的新的列表
格式:
filter(function,iterable)
iterable:序列
序列的每一个元素作为参数传递到函数进行判断,返回True/False,最后将True的元素存放到一个新的列表中
返回值:列表
案例:筛选指定的元素
list01 = [1,2,3,4,5,6,7,8,9]
def get_num(num):
if num % 2 == 0:
return True
else:
return False
result = filter(get_num,list01)
print(list(result))
[2, 4, 6, 8]
筛选有效信息:
data01 = [["姓名","年龄","爱好"],["小明",25,"无"],["老王",30,"写代码"]]
def get_name(var):
if var == "无":
return False
else:
return True
for info in data01:
result = filter(get_name,info)
print(list(result))
17.05 python语言基础(高阶函数----sorted)
定义:
sorted():函数对所有的可迭代的对象进行排序
sort:list
sorted返回值;为一个新的列表
格式:
sorted(iterable[,cmp[,key[,reverse]]])
iterable:可迭代的对象
cmp:笔记哦的函数,这个函数具有两个参数,参数的值都是都从可迭代的对象中取出
大于;返回1
小于:返回-1
key:主要用来比较元素,只有一个参数,参数的值都是从可迭代的对象中取出,指定可迭代对象中的一个元素进行排序。
reverse:排序规则,默认reverse = False(升序) reverse = true(降序)
排序案例:
普通排序:
list01 = [1,3,5,68,9,13]
list02 = sorted(list01)
print(list02)
print(id(list01))
print(id(list02))
list01.sort()
print(list01)
print(id(list01))
返回结果:
[1, 3, 5, 9, 13, 68]
2031477589192
2031477589128
[1, 3, 5, 9, 13, 68]
2031477589192
总结:使用sorted排序后,输出新的列表
使用sort排序后,还是原来的列表
按绝对值大小排序
list04 = [1,2,3,-4,-6,9]
list04.sort()
print(list04)
list05 = sorted(list04,key=abs)
print(list05)
#降序
list06 = [1,2,4,7,3,2,5,3]
list07 = sorted(list06)
print(list07)
返回结果:
[-6, -4, 1, 2, 3, 9]
[1, 2, 3, -4, -6, 9]
[1, 2, 2, 3, 3, 4, 5, 7]
函数可以自己写:
def my_len(str):
return len(str)
list08 = ["3333333","aaa","b222","c34567"]
list09 = sorted(list08,key=my_len)
print(list09)
返回结果:
[‘aaa‘, ‘b222‘, ‘c34567‘, ‘3333333‘]
17.06python、语言基础(高阶函数,选择排序)
每次都从排序的数据中选取最小(最大)的一个元素,存放的列表的起始位置,直到全部排完
[1,3,5,6,8,9,2,3,5,2,1]
选择排序
以上是关于高阶函数的主要内容,如果未能解决你的问题,请参考以下文章