高阶函数
- 实参是一个函数名
- 函数的返回值是一个函数
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}]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。