高阶函数

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]

选择排序






























































































































































































































































































以上是关于高阶函数的主要内容,如果未能解决你的问题,请参考以下文章

Python高阶函数

浅谈JS高阶函数

Python3 高阶函数

python之高阶函数

python中的高阶函数

高阶函数编程