匿名函数
内置函数
max
sorted
map
reduce
filter
一、匿名函数
没有名字的函数
语法:
lambda 参数: 返回值
lambda :
例如:lambda x,n:x**n
f = lambda x,n:x**n
f(2,3)
>>>8
注意:
匿名函数需要一次性使用。
匿名函数单独使用毫无意义,它必须配合 “内置函数” 一起使用的才有意义。
# 有名函数
def func(): #func --->内存地址
return 1
print(func()) # func函数对象 + () 即调用
# 匿名函数:
# 匿名(), return 已经自动添加了
# lambda 匿名(): return 1
func = lambda : 1
print(func()) # 1
func = lambda : 1
print()
二、内置函数
内置函数:python内部提供的自带的内置方法
如:range,print,len,max,min,sorted,map,filter
max:求最大值 max(可迭代对象)
max内部会将可迭代对象中的每一个值取出,并且进行判断
list1 = [1,2,3,4,5]
print(max(list1))
>>>5
# 需求: 获取dict1中薪资最大的人的 名字
dict1 = {
'tank': 1000,
'egon': 500,
'sean': 200,
'jason': 100
}
print(max(dict1, key=lambda x: dict1[x]))
>>>tank
sorted: 默认升序(从小到大) reverse:反转 reverse默认是False
list1 = [10, 2, 3, 4, 5]
print(sorted(list1))
print(sorted(list1, reverse=True)) # reverse=True--> 降序
dict1 = {
'tank': 100,
'egon': 500,
'sean': 200,
'jason': 50
}
# new_list = ['egon', 'sean', 'tank', 'jason']
new_list = sorted(dict1, key=lambda x: dict1[x], reverse=True)
print(new_list)
map: 映射
语法:map(函数地址, 可迭代对象) ---> map对象
map会将可迭代对象中的每一个值遍历取出,并且按照指定的规则映射到一个map对象中,
可以再将map对象转换成列表/元组。
注意: 只能转一次。
如:
name_list = ['egon', 'jason', 'sean', 'tank']
map_1 = (map(lambda x : x + '喜欢吃生蚝' if x == 'tank' else x + '_DJB',name_list))
print(map_1) # map_1 是一个map对象 即<map object at 0x00000177C926FB48>
print(list(map_1)) #转成列表 map_1-->生成器--->用完后,就不能再取了
#print(tuple(list(map_1))) #是一个空元组
reduce: 合并
from functools import reduce
-每次从可迭代对象中获取两个值进行合并,并且可以设置初始值
-语法:reduce(lambda x, y: x + y, range(1, 101), 0)
# 需求: 求1——100的和
res = reduce(lambda x, y: x + y, range(1, 101), 1000)
print(res) # 6050
filter:过滤
语法:filter(函数地址,可迭代对象)
filter_obj = filter(lambda x: x, name_list)
filter会将可迭代对象中的值遍历取出,然后通过判断,把条件成立 “过滤获取”出来的值添加到 filter对象中
name_list = ['egon_dsb', 'jason_dsb','sean_dsb', 'tank']
filter_obj = filter(lambda name: name.endswith('_dsb'), name_list) #filter_obj是一个filter对象
print(filter_obj) #<filter object at 0x0000016CC5A5ED48>
print(list(filter_obj)) #转成列表
# print(tuple(filter_obj)) #['egon_dsb', 'jason_dsb', 'sean_dsb']