赞
踩
匿名函数也叫 lambda
函数,如果⼀个函数有⼀个返回值,并且只有⼀句代码,可以使用 lambda
简化
lambda 参数列表 : 表达式
注意:
lambda
表达式的参数可有可无,函数的参数在lambda
表达式中完全适用。lambda
函数能接收任何数量的参数但只能返回⼀个表达式的值一个例子:
# 函数 def fn1(): return 200 print(fn1) print(fn1()) # lambda表达式 fn2 = lambda: 100 print(fn2) print(fn2()) '''结果 <function fn1 at 0x000002255E02D400> 200 <function <lambda> at 0x000002255E737840> 100 '''
注意:直接打印lambda表达式,输出的是此lambda的内存地址
# 无参
print((lambda: 100)()) # 100
# 一个参数
print((lambda a: a)('hello world')) # hello world
# 默认参数
print((lambda a, b, c=100: a + b + c)(10, 20)) # 130
# 可变参数:*args 【注意:这⾥的可变参数传⼊到lambda之后,返回值为元组】
print((lambda *args: args)(10, 20, 30)) # (10, 20, 30)
# 可变参数:**kwargs 【注意:这⾥的可变参数传⼊到lambda之后,返回值为字典】
print((lambda **kwargs: kwargs)(name='python', age=20)) # {'name': 'python', 'age': 20}
# 带判断的lambda print((lambda a, b: a if a > b else b)(1000, 500)) # 列表数据按字典key的值排序 students = [ {'name': 'TOM', 'age': 20}, {'name': 'ROSE', 'age': 19}, {'name': 'Jack', 'age': 22} ] # 按name值升序排列 students.sort(key=lambda x: x['name']) print(students) # 按name值降序排列 students.sort(key=lambda x: x['name'], reverse=True) print(students) # 按age值升序排列 students.sort(key=lambda x: x['age']) print(students)
递归函数特点
# 3以内数字累加和
def sum_numbers(num):
# 1.如果是1,直接返回1 -- 出⼝
if num == 1:
return 1
# 2.如果不是1,重复执⾏累加:
result = num + sum_numbers(num-1)
# 3.返回累加结果
return result
sum_result = sum_numbers(3)
# 输出结果为6
print(sum_result)
把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。
内置高阶函数
map(func, lst)
,将传入的函数变量func
作用到lst
变量的每个元素中,并将结果组成新的列表(Python2)
/迭代器(Python3)
返回。
注意:Python的可迭代对象有字符串、元组、列表
list1 = [1, 2, 3, 4, 5]
def func(x):
return x ** 2
result = map(func, list1)
print(result) # <map object at 0x0000013769653198>
print(list(result)) # [1, 4, 9, 16, 25]
reduce(func(x,y),lst)
,其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。
import functools
list1 = [1, 2, 3, 4, 5]
def func(a, b):
return a + b
result = functools.reduce(func, list1)
print(result) # 15
filter(func, lst)
函数用于过滤序列, 过滤掉不符合条件的元素, 返回⼀个 filter
对象。如果要转换为列表,可以使用 list()
来转换。
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func(x):
return x % 2 == 0
result = filter(func, list1)
print(result) # <filter object at 0x0000017AF9DC3198>
print(list(result)) # [2, 4, 6, 8, 10]
学员管理系统
'''显示功能界⾯''' def print_info(): print('-' * 20) print('欢迎登录学员管理系统') print('1: 添加学员') print('2: 删除学员') print('3: 修改学员信息') print('4: 查询学员信息') print('5: 显示所有学员信息') print('6: 退出系统') print('-' * 20) # 所有功能函数都是操作学员信息,所有存储所有学员信息应该是⼀个【全局变量】,数据类型为【列表】 info = [] # 【注意不可少,否则会报错】 '''添加学员''' def add_info(): # 接收⽤户输⼊学员信息 new_id = input('请输⼊学号:') # 0、1、2、3…… new_name = input('请输⼊姓名:') new_tel = input('请输⼊⼿机号:') # 声明info是全局变量 global info # 检测⽤户输⼊的姓名是否存在,存在则报错提示 for i in info: if new_name == i['name']: print('该⽤户已经存在!') return # 如果⽤户输⼊的姓名不存在,则添加该学员信息 info_dict = {} # 将⽤户输⼊的数据追加到字典 info_dict['id'] = new_id info_dict['name'] = new_name info_dict['tel'] = new_tel # 将这个学员的字典数据追加到列表 info.append(info_dict) print(info) ''' 删除学员''' def del_info(): while True: del_id = int(input('请输⼊要删除的学员学号:')) global info # 检查学员是否存在 # 如果存在则删除列表指定下标的数据 if 0 <= del_id < len(info): del_flag = input('确定要删除吗?yes or no') if del_flag == 'yes': del info[del_id] print(info) # 删除了⽬标学员信息后退出循环 break else: print('输⼊学员有误,请重新输⼊') '''修改学员信息''' def modify_info(): while True: # ⽤户输⼊要修改的学员学号 modify_num = int(input('请输⼊要修改的学员学号:')) global info # 检查这个学员是否存在,存在则打印学员信息,并按⽤户输⼊修改 if 0 <= modify_num < len(info): print(f'该学员学号是{info[modify_num]["id"]}, 姓名是{info[modify_num]["name"]}, ⼿机号是{info[modify_num]["tel"]}') info[modify_num]["id"] = input('请输⼊学号:') info[modify_num]["name"] = input('请输⼊姓名:') info[modify_num]["tel"] = input('请输⼊⼿机号:') print(info) break else: print('输⼊学员有误,请重新输⼊') '''查询学员信息''' def search_info(): search_name = input('请输⼊要查找的学员姓名:') for i in info: if search_name == i['name']: print('*** 查询到信息如下 ***') print(f'该学员学号是{i["id"]}, 姓名是{i["name"]}, ⼿机号是{i["tel"]}') break else: print('查⽆此⼈......') '''显示所有学员信息''' def print_all(): """ 显示所有学员信息 """ print('学号\t姓名\t⼿机号') for i in info: print(f'{i["id"]}\t{i["name"]}\t{i["tel"]}') while True: # 1. 显示功能界⾯ print_info() # 2. ⽤户选择功能 user_num = input('请选择您需要的功能序号:') # 3. 根据⽤户选择,执⾏不同的功能 if user_num == '1': print('添加学员') add_info() elif user_num == '2': print('删除学员') del_info() elif user_num == '3': print('修改学员信息') modify_info() elif user_num == '4': print('查询学员信息') search_info() elif user_num == '5': print('显示所有学员信息') print_all() elif user_num == '6': exit_flag = input('确定要退出吗?yes or no') if exit_flag == 'yes': break else: print('输⼊错误,请重新输⼊!!!')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。