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、优点:省内存,一次只产生一个值在内存中

 

posted @ 2021-07-07 16:31  似梦千寻  阅读(78)  评论(0)    收藏  举报