1.lambda应用排序
students = [
{"name": "孙涛", "age": 88},
{"name": "张恩", "age": 8},
{"name": "饶鹏鹏", "age": 5}
]
# def func1(x):
# return x["age"]
#
#
# func2 = lambda x: x["age"]
# students 会把数据传递给 func1
# 返回值 会按照顺序进行排序
students.sort(key=lambda x: x["age"], reverse=False)
print(students)
# 酱香进行排序
students.sort(key=lambda x: x["age"], reverse=True)
print(students)
2.将函数进行转换
a = -9
# abs 是绝对值函数
b = abs(a)
print(b)
def func1(a, b, f):
# f = abs
# print(a, b, f)
return abs(a) + abs(b)
# abs这个函数传递给f 将函数作为参数进行传递
result = func1(-6, 7, abs)
print(result)
3.map内置函数
lst = [1, 2, 3, 4, 5]
# 计算x的平方
def func1(x):
return x ** 2
# # 普通方法
# lst1 = []
# for i in lst:
# print(func1(i), end=' ')
# lst1.append(func1(i))
# print(lst1)
# 返回的是一个map对象 本身是一个迭代器 实际也是一个数据类型
# python2 result是列表
# python3 result是迭代器
result = map(func1, lst)
print(result)
# 迭代器循环获取
for i in result:
print(i)
# 迭代器转换为列表
result2 = list(result)
print(result2, type(result2))
'''
迭代器和列表的区别
迭代器和列表都是容器
迭代器循环获取之后 里面的内容就被拿走了 计算空的容器
列表循环获取之后 里面的内容还在 列表持久化
迭代器,CPU取迭代器中选择工作 工作完成之后不会重复同一个工作
【工作1,工作2,工作3】
'''
4.reduce内置函数
import functools
lst = [1, 2, 3, 4, 5]
def func1(a, b):
return a + b
# lst中的值 依次传递给func1
# reduc后将lst中的前两个数 相加 然后在和第三个数 一起传递给func1然后结构在和第四个数
result = functools.reduce(func1, lst)
print(result)
5.filter内置函数
# lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#
#
# def func(x):
# return x % 2 == 0
#
#
# # 过滤函数 返回一个filter对象
# result = filter(func, lst)
# print(result, type(result))
#
# print(list(result))
'''
练习:
1.首先有一个0-100的列表
选出斐波那契数列形成一个列表【 1 1 2 3 5 8 13 21 34 55 89】
选出3的倍数【3 21】
相加
'''
def lis_func(x):
list1 = []
for i in range(x):
list1.append(i + 1)
print(list1)
def fib_func(n):
# 初始值设置 如果n是0或者是1 直接返回本身
if n in (0, 1):
# 只要执行return 本次函数调用就会终止
return n
return fib_func(n - 2) + fib_func(n - 1)
# 传递一个数 然后就是打印前几位
for i in range(12):
print(fib_func(i), end=" ")
print(sum)
lis_func(100)










