学习python的第十二天

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值