匿名函数与内置函数
匿名函数
无名字的函数 用lambda :表示
:左边是参数,右边是返回值
函数的调用时需要函数名+()因为匿名函数没有名字,所以没法调用只能一次性使用
匿名函数单独使用没有意义,需要配合内置函数一起使用才有意义
内置函数
python内部提供的内置方法,如:print(), len(), range(), max(), min(), sorted(), map(), filter()
-
max(可迭代对象) 求最大值
字符串比较的是ASCII
# 求列表l1中的最大值
l1 = [10, 2, 5, 1, 4]
print(max(l1))
# 求字典中薪资最高的人
dict1 = {
'tank': 1000,
'egon': 500,
'sean': 200,
'jason': 800
}
print(max(dict1, key=lambda x:dict1[x]))
>>>
tank
-
min(可迭代对象) 求最小值
字符串比较的是ASCII
# 求字典中薪资最低的人
dict1 = {
'tank': 1000,
'egon': 500,
'sean': 200,
'jason': 800
}
print(min(dict1, key=lambda x:dict1[x]))
>>>
sean
- sorted():默认升序(从小到大),reverse反转,默认reverse=False
# 将字典中薪资排序
dict1 = {
'tank': 1000,
'egon': 500,
'sean': 200,
'jason': 800
}
# 升序
print(sorted(dict1, key=lambda x: dict1[x]))
# 降序
print(sorted(dict1, key=lambda x: dict1[x], reverse=True))
-
map() :映射
语法:map(函数地址,可迭代对象) ---->>得到map对象
map会将可迭代对象中的值遍历取出,然后按照指定的规则映射到一个map对象中
可以将map对象转换到列表或者元组中,只能转一次
res = map(lambda x: x, range(5))
print(res) # 得到map对象>>>><map object at 0x000001374A5C13C8>
print(list(res)) # 将map对象放到列表中>>>[0, 1, 2, 3, 4]
print(tuple(res)) # 只能转一次>>>()
# 将list1中tank后缀加上"_生蚝",其他元素中后缀加上"DS"
list1 = ['tank', 'jason', 'sean', 'egon']
res = map(lambda x: x+'生蚝' if x == 'tank' else x + 'DS', list1)
# res是map对象
print(tuple(res))
>>>
('tank生蚝', 'jasonDS', 'seanDS', 'egonDS')
-
reduce():合并
需要从functools包中调用from functools import reduce
语法:reduce(函数地址,可迭代对象,初始值默认为None)
将可迭代对象的值两两进行合并,并初始值可以修改
from functools import reduce # 调用reduce模块
# 求0-5的和
# 普通方法
num = 0
for i in range(5):
num += i
print(num)
# reduce方法
res = reduce(lambda x, y: x+y, range(5)) # 初始值默认为None
print(res) # 10
res = reduce(lambda x, y: x+y, range(5),100) # 初始值为100
print(res) # 110
res = reduce(lambda x, y: x*y, range(1, 5)) # 初始值默认为None
print(res) # 24
-
filter():过滤
语法:filter(函数地址,可迭代对象) ----->>得到filter对象
将可迭代对象中的值遍历取出,然后通过判断,filter会将函数中返回的结果为True 对应 的参数值 “过滤出来”,添加到filter对象中
可以将filter对象转换到列表或者元组中,只能转一次
# 将结尾是DS的名字过滤出来
t = ('tank生蚝', 'jasonDS', 'seanDS', 'egonDS')
res = filter(lambda x:x.endswith('DS'), t) # filter对象
print(res) # filter对象<filter object at 0x00000240FD29CA08>
print(list(res)) # 将filter对象转到列表中['jasonDS', 'seanDS', 'egonDS']