高阶函数python,python中的高阶函数

20190603110423594048.png

2.内之高阶函数_map

map():接收两个参数,一个是函数 一个是序列

map将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列返回

#对于一个序列[-1,3,-4,-5]的每一个元素求绝对值

import random

print(list(map(abs,[-1,3,-4,-5])))

20190603110424034494.png

#对于每个元素求阶乘

def factoria(x):

"""对x求阶乘"""

res = 1

for i in range(1,x+1):

res = res * i

return res

li = [random.randint(2,7) for i in range(10)]

print(list(map(factoria,li)))

20190603110424553069.png

#将一个字符串转换成整型

from functools import reduce

def str2int(s):

def char2int(ch):

c = {str(x): x for x in range(10)}

return c[ch]

def fun(n1, n2):

return n1 * 10 + n2

return reduce(fun, map(char2int, s))

num = str2int(‘12345‘)

print(type(num), num)

20190603110424994492.png

3.内置高阶函数_filter

filter过滤函数

和map()类似的,也接收一个函数和一个序列

但是和map()不同的是,filter()把传入的函数依次作用于

每个元素,然后根据返回值是True或者False决定保留还是丢弃该元素

def isodd(num):

if num % 2 == 0:

return True

else:

return False

print(list(filter(isodd,range(100))))

20190603110426172272.png

4.匿名函数

匿名函数的关键字为 lambda,冒号前面是 形参 冒号后面是返回值 。

lambda函数能实现普通一样的功能,能传入参数,也能返回运算结果;不同的是lambda函数没有函数名,通常只有一行的表达式,函数的复杂程度也有限。

from functools import reduce

def add(x,y):

return x+y

print(reduce(add,range(10)))

print(reduce(lambda x,y:x+y,range(10)))

def mypow(x):

return x2

print(list(map(lambda x:x2,range(5))))

def isood(num):

return num%2 ==0

print(list(filter(lambda x:x%2==0,range(100))))

20190603110427083439.png

5.sorted( )函数

sorted( )函数是用来对可迭代对象排序的,与列表的list( )函数不同,后者是在原位置上进行排序的,排序后原列表的元素顺序会发生改变,而前者是将排序后的结构生成到一个新的列表中。

s = [‘dfs‘,‘Fds‘,‘tda‘,‘Eds‘]

print(s)

print(sorted(s))

print(sorted(s,key=str.lower))

print(sorted(s,key=str.upper,reverse=True))

20190603110427564903.png

info = [

商品名称 商品数量 商品价格

(‘apple1‘,200,32),

(‘apple2‘, 40, 12),

(‘apple3‘, 1000, 23),

(‘apple1‘, 40, 2),

(‘apple1‘, 40, 5)

]

#按照商品数量进行排序

def sorted_by_count(x):

return x[1]

#按照商品价格进行排序

def sorted_by_price(x):

return x[2]

#先按照商品数量进行小-大的排序,如果商品数量一样

#则按照商品价格由小-大进行排序

def sorted_by_count_price(x):

return x[1],x[2]

print(sorted(info,key=sorted_by_count))

print(sorted(info,key=sorted_by_price))

print(sorted(info,key=sorted_by_count_price))

20190603110427763153.png

#假设我们用一组tuple表示学生名字和成绩,

L =[(‘Bob‘, 75), (‘Adam‘, 92), (‘Bart‘, 66),

(‘Lisa‘, 88)],按名字进行排序

20190603110428234851.png

原文:https://blog.51cto.com/12893781/2403822

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值