python基础--匿名函数、内置函数
目录
匿名函数
没有名字的函数,没有名字,所以没法调用,只能和某些方法连用
匿名函数的语法
lambda 参数:返回值
如果你真的要用,也可以用,但是得给他一个名分,即变成有名函数
f = lambda x, y: x * y
res = f(1, 2)
print(res)
与max/min/filter/map/sorted联用
max 返回最大值
res = max([1, 2, 3, 4, 5])
print(res)
res = max(1, 2, 3, 4, 5, 6, )
print(res)
取出字典中最大值对应的key
salary_dict = {'nick': 3000,'jason': 100000,'tank': 5000,'sean': 2000,'z': 1000}
def func(name): # 定义一个函数,用于取字典里的值
return salary_dict[name] # 取出所有的值3000/100000/5000/2000/1000
res = max(salary_dict, key=func) # 默认key的首字母
print(res)
将函数匿名,写成如下格式结果一样:
res = max(salary_dict, key=lambda name: salary_dict[name]) # 默认key的首字母
print(res)
key=func默认做的事情
1. 循环遍历salary_dict,会取到所有的key值
2. 然后把所有的key值依次丢入func中,返回薪资
3. 通过返回的薪资排序,得到最大值
min返回最小值
res = min(salary_dict, key=lambda name: salary_dict[name])
print(res)
fileter ---> 筛选
def function(item): # 1/2/3/4
if item < 3:
return True
else:
return False
res = filter(function, [1, 2, 3, 4])
print(res) # 打印结果为:<filter object at 0x000001C87173B7F0>
将这个函数匿名,写成以下格式:
res = filter(lambda item: item > 2, [1, 2, 3, 4])
print(res) # 打印结果为: <filter object at 0x000001C87173B7F0>
print(list(res)) # 打印结果为: [3, 4]
salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000,
'z': 1000
}
res = filter(lambda item: salary_dict[item] > 3000, salary_dict)
print(list(res))
map --> 映射
def function(item):
return item + 2
res = map(function,[1,2,3,4])
print(res)
print(list(res))
res = map(lambda item: item + 2,[1,2,3,4])
print(res)
print(list(res))
sorted --> 排序
salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000,
'z': 1000
}
def function2(item):
return salary_dict[item]
res = sorted(salary_dict, key=function2, reverse=True)
print(list(res))
res = sorted(salary_dict, key=function2, reverse=True)
有兴趣的可以看一看
def sorted(iter, key=None, reverse=None):
iter.sort()
if key:
# key 是一个函数对象
lt = []
lt2 = []
for i in iter:
res = key(i)
lt.append(res)
lt2.append(i)
lt.sort()
lt3 = []
for i in lt:
for j in lt2:
if j[1] == i:
lt3.append(j)
if reverse:
lt3.reverse()
return lt3
if reverse:
iter.reverse()
return iter
salary_list = list(salary_dict.items())
print(salary_list) # [('nick', 3000), ('jason', 100000), ('tank', 5000), ('sean', 2000), ('z', 1000)]
print(sorted(salary_list, key=lambda i: i[1],
reverse=None)) # [('sean', 2000), ('nick', 3000), ('tank', 5000), ('jason', 100000)]
python解释器的内置方法
一共有68种
异常处理: 报了错,进行处理
num = input('请输入数字:')
try:
1 / int(num) # 报错之后,不运行下面的代码
except ZeroDivisionError:
print('傻逼,不能输入0')
以上代码处理了除数为0这一种错误,当可能有多个错误时,我们可以进行如下操作:
try:
"""可能出错的代码段"""
except Exception as e: # 万能异常,只要有错误,就捕捉
print(e) # 错误的描述信息