python自学,笔记分享

day6

今天厉害一点

递归,内置函数,匿名函数,高阶函数

今天晚上主要学电赛了,这里少一点

"""
递归:作用(简化代码遍历一个文件夹下所有文件)特点(函数内部自己调用自己,必须有出口)
"""


def return_num():
    return 100


result = return_num()
print(result)


def sum_numbers(num):  # 等差数列求和
    if num == 1:
        return 1  # 出口;return返回到上一次函数调用的位置——实现减一后的数据与原数据累加
    return num + sum_numbers(num - 1)  # 函数内部自己调用自己


sum_result = sum_numbers(10)  # 3以内累加和=3+2以内累加和(再调用=2+1以内累加和)
print(sum_result)  # 我计算机的最大递归深度996,没有出口会超出

'''lambda(匿名函数)简化代码:当函数有一个返回值,并且只有一句代码
参数可有可无,能接收任何数量的参数但只能返回一个表达式的值
'''


def gulaobanfa():
    return 100


result = gulaobanfa()
print(result)

xinbanfa = lambda: 100
print(xinbanfa)  # 打印lambda内存地址
print(xinbanfa())  # 这样打印100

fn1 = lambda a, b: a + b  # 实现a+b
print(fn1(1, 2))

fn2 = lambda a, b, c=100: a + b + c
print(fn2(1, 2))

fn3 = lambda *args: args
print(fn3(12, 21, 11))  # 返回值为元组

fn4 = lambda **kwargs: kwargs
print(fn4(name='aa', age=22))  # 返回值为字典

fn5 = lambda a, b: a if a > b else b  # 带判断:ab比大小,谁大返回谁
print(fn5(11, 22))

# 列表数据按k值排序
students = [{'name': 'aa', 'age': 1}, {'name': 'dd', 'age': 4}, {'name': 'bb', 'age': 2}, {'name': 'cc', 'age': 3}]
students.sort(key=lambda x: x['name'])  # x存放将来要排序的数据
print(students)
students.sort(key=lambda x: x['age'], reverse=True)
print(students)

'''高阶函数:把函数作为参数传入'''
abs(-10)  # 求绝对值
round(1.2)  # 四舍舍五入


def add_num(a, b):
    return abs(a) + abs(b)


result = add_num(-1, 2)
print(result)


def sum_numm(a, b, f):  # 高阶函数
    return f(a) + f(b)


result = sum_numm(-1, 2, round)  # 还可以传入函数
print(result)

'''内置高阶函数'''
# map(函数名字,列表)  把选用函数作用在列表所有元素上
list1 = [1, 2, 3, 4, 5]
def func(x):
    return x ** 2  # 计算二次方
result = map(func, list1)  # 返回一个迭代器,所以需要list()一下
print(result)  # 打印迭代器
print(list(result))  # 转换成数据列表后,才能看到数据
# reduce(func, lst),func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累计计算
import functools  # 倒模块
list2 = [1, 2, 3, 4, 5]
def func(a, b):
    return a+b
result = functools.reduce(func, list2)  # reduce在functools这个模块当中
print(result)
# filter(func,lst) 过滤序列,
list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def func(x):
    return x % 2 ==0
result = filter(func, list3)
print(list(result))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值