列表推导式&&递归函数&&匿名函数

推导式

字典推导式

创建字典 key是1-5的数字,v是这个数字的平方

dict1 =

dict1 = {i: i**2 for i in range(1, 5)}
print(dict1)

将两个列表合并为一个字典

list1 = ['name', 'age', 'gender']
list2 = ['hekang', 18, '男']
dict2 = {list1[i]: list2[i] for i in range(len(list1))}
print(dict2)

提取字典中的目标数据

counts = {'MBP': 256, 'HuaWei': 156, 'Dell': 530, 'acer': 12}

需求:提取上述电脑数量大于等于200的字典数据

counts1 = {k: v for k, v in counts.items() if v >= 200}
print(counts1)
列表推导式

基本格式为:
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]

l1 = [k for k in range(10)]
print(l1)

多重for循环实现列表推导式

list1 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list1)
集合推导式

需求:创建一个集合,数据为下方列表的2次方

list1 = [1, 1, 2]

list1 = [1, 1, 2]
set1 = {i ** 2 for i in list1}
print(set1)

集合有去重的功能

递归是一种编程思想

递归的特点:

函数内部自己调用自己

必须有出口

应用:3以内数字累加和

需求:3以内数字累加和 3+2+1

6 = 3 + 2以内数字累加和

2以内数字累加和 = 2 + 1以内数字累加和

1以内数字累加和 = 1 (出口)

图片

def sum_number(num):# 2.出口
if num == 1:
return 1
# 1.当前数字 + 当前数字-1的累加和
return num + sum_number(num-1)

result = sum_number(3)
print(result)

如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化

lambda语法

lambda 参数列表 : 表达式

lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用

lambda表达式能接收任何数量的参数但只能返回一个表达式的值

需求:函数 返回值100

1. 函数

def fn1():
return 100
result = fn1()
print(result)

2. lambda 匿名函数

lambda 参数列表: 表达式

fn2 = lambda: 100
print(fn2) # lambda内存地址

100返回值 调用函数

print(fn2())
lambda加法计算

需求:计算任意两个数字的累加和

函数

def add(a, b):
return a + b
result = add(1, 2)
print(result)

lambda

fn = lambda a, b : a + b
print(fn(1, 2))
lambda参数格式

1. 无参数

fn1 = lambda : 100
print(fn1())

2. 一个参数

fn2 = lambda a : a
print(fn2(5))

3.默认参数

fn3 = lambda a, b, c=100: a + b + c
print(fn3(2,3))

4.可变参数:*args

fn4 = lambda *args: args
print(fn4(1, 2, 3, 4))

返回的是元组

5.可变参数: **kwargs

fn5 = lambda **kwargs: kwargs
print(fn5(name = 'baixu', age = '20'))

返回的是字典

带判断的lambda

01 带判断的lambda

lambda两个数字比大小,谁大返回谁

fn1 = lambda a, b: a if a > b else b
print(fn1(100,200))
列表数据按字典key的值排序

students = [
{'name': 'TOM', 'age': 20},
{'name': 'ROSE', 'age': 19},
{'name': 'Jack', 'age': 22}
]

sort(key=lambda...,reverser=bool数据类型)

1. name key对应的值进行升序排序

students.sort(key=lambda x: x['name'])
print(students)

2. name key对应的值进行降序排序

students.sort(key=lambda x: x['name'], reverse=True)
print(students)

3. age key对应的值进行升序排序

students.sort(key=lambda x: x['age'])
print(students)

posted @ 2021-03-16 13:33  给我一碗炒粉  阅读(196)  评论(0)    收藏  举报