08,python-匿名函数、三元表达式、列表式、生成器表达式
一、匿名函数
定义:不通过def来声明函数名字,而是通过lambda关键字来定义的函数称为匿名函数。
语法:lambda 参数:表达式
①lambda函数与Python内置函数配合使用
# 结合max 函数使用 member_list = [ {"name": "风清扬", "age": 99, "power": 10000}, {"name": "无崖子", "age": 89, "power": 9000}, {"name": "王重阳", "age": 120, "power": 8000} ] new_list = sorted(member_list, key=lambda : x["power"]) print(new_list) 结果:[{'name': '王重阳', 'age': 120, 'power': 8000}, {'name': '无崖子', 'age': 89, 'power': 9000}, {'name': '风清扬', 'age': 99, 'power': 10000}]
# 结合map使用 (map(func, *iterables) 会根据提供的函数对指定序列中的每一个元素做映射。)
# 对于每个元素进行 + 1 操作 demo_list = [1,2,3,4,5,6] # 返回map对象,强制转换 list(map(lambda x:x+1,demo_list)) 结果:[2, 3, 4, 5, 6, 7]
# 结合filter使用 (filter(function or None, iterable)函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。)
demo_list = [-1,-2,-3,4,5,6] list(filter(lambda x:x>0,demo_list)) 结果:[4, 5, 6]
常见配合使用内置函数:max,min,sorted,map,reduce,filter
二、三元表达式
name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res)
三、列表推导式
#1、示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)]
#2、语法 [expression for item1 in iterable1 if condition1 for item2 in iterable2 if condition2 ... for itemN in iterableN if conditionN ] 类似于 res=[] for item1 in iterable1: if condition1: for item2 in iterable2: if condition2 ... for itemN in iterableN: if conditionN: res.append(expression)
四、生成器表达式
#1、把列表推导式的[]换成()就是生成器表达式 #2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性 >>> chicken=('鸡蛋%s' %i for i in range(5)) >>> chicken <generator object <genexpr> at 0x10143f200> >>> next(chicken) '鸡蛋0' >>> list(chicken) #因chicken可迭代,因而可以转成列表 ['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',] #3、优点:省内存,一次只产生一个值在内存中

浙公网安备 33010602011771号