高阶函数

  • 实参是一个函数名
  • 函数的返回值是一个函数
print(abs(-10))
f = abs
print(f(-10))

#传递的参数包含函数名。
def myfun(x,y,fun):
    return f(x),f(y)

print(myfun(-10,23,abs))



10
10
(10, 23)

图片描述

python内置高阶函数

map()函数

map() 函数接收两个参数,一个是函数,一个是序列, map 将传入的函数依次作用到序列的每个元素,并把结果作为新的 list 返回。

#随机生成一个长度为10,元素在2~7之间的列表
#对列表里所有元素求阶乘
import random

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

def mult(x):
    rs=1
    for i in range(1,x+1):
        rs=i*rs
    return rs
print(map(mult,lee))
print(list(map(mult,lee)))



[2, 6, 5, 3, 3, 3, 3, 5, 4, 6]
<map object at 0x7f7973d8e240>
[2, 720, 120, 6, 6, 6, 6, 120, 24, 720]

图片描述

reduce()函数

把当前输出作为下一次运算的输入

  • python2中为内置函数
  • python3需要导入,from functools import reduce
#求10的阶乘
from functools import reduce
def multi(x, y):
    return x * y

# [1,2,3] ---> multi(multi(1,2),3)
c = reduce(multi, range(1, 11))
print(c)

图片描述

filter()函数

filter() 也接收一个函数和一个序列。和 map() 不同的时,filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True还是 False 决定保留还是丢弃该元素。

#求0~10之间的奇数
def isodd(x):
    return x % 2 != 0

# [i for i in range(100,111) if i %2 !=0]

d = filter(isodd, range(0, 11))
print(d)
print(list(d))


<filter object at 0x7f8ae773c080>
[1, 3, 5, 7, 9]

图片描述

匿名函数

  • 匿名函数定义规则

       lambda 形参:返回值
    
from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3,4,5]))

15

列表里嵌套列表进行排序

d = {
    '001':{
        'name':'apple',
        'count':124,
        'price':1000
    },
    '002':{
        'name':"banana",
        'count':8,
        'price':1024
    }
}
#列表里嵌套元组
print(d.items())    #按key值排序
print(sorted(d.items(),key=lambda x:x[1]['count']))
print(sorted(d.items(),key=lambda x:x[1]['price']))

#itemgetter会忽略key值
print(sorted(d.values(),key=itemgetter('count')))
print(sorted(d.values(),key=itemgetter('price')))



dict_items([('001', {'name': 'apple', 'count': 124, 'price': 1000}), ('002', {'name': 'banana', 'count': 8, 'price': 1024})])
[('002', {'name': 'banana', 'count': 8, 'price': 1024}), ('001', {'name': 'apple', 'count': 124, 'price': 1000})]
[('001', {'name': 'apple', 'count': 124, 'price': 1000}), ('002', {'name': 'banana', 'count': 8, 'price': 1024})]
[{'name': 'banana', 'count': 8, 'price': 1024}, {'name': 'apple', 'count': 124, 'price': 1000}]
[{'name': 'apple', 'count': 124, 'price': 1000}, {'name': 'banana', 'count': 8, 'price': 1024}]

图片描述


SheenStar
168 声望26 粉丝

祝你坚强