DAY 23 内置函数 递归调用

本文通过制作和食用包子的比喻介绍了Python中的协程概念,并演示了send和yield的功能。此外,还展示了多种Python内置函数的使用方法,包括divmod、frozenset、isinstance等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以做包子吃包子为例,表示 send 传值,yield 接受值

import time
import random
def init(func):
    def wrapper(*args,**kwargs):
        g=func(*args,**kwargs)
        next(g)
        return g
    return wrapper

def producer(target,count):
    for i in range(count):
        target.send('baozi%s' %i)

@init
def consumer(name):
    while True:
        food=yield
        print('%s start to eat %s' %(name,food))
consumer('alex',produncer(10)) 

divmod 取余数

print(divmod(73,23))

#结果(3, 4)

forzenset 不可变集合

s=frozenset({1,2,3})
print(type(s))
#结果 <class 'frozenset'>

isinstance 判断是否为目标类型

print(isinstance(1,int))
# True

pow

print(pow(3,2,2)) #3**2%2
# 1

reversed 反转

l=['a1','a2','a3','a4','a5','a6','a7']
print(list(reversed(l)))
#['a7', 'a6', 'a5', 'a4', 'a3', 'a2', 'a1']

round 保留几位小数

print(round(3.123123123,4))
#3.1231

slice 切片对象

l=['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10','a11']
x=slice(2,10,2)
print(l[x])
# ['a3', 'a5', 'a7', 'a9']

sum 求和 只能加数字

zip 拉链函数,必须一一对应

s='hello!'
l=[1,2,3,4,5,6]
for i in zip(s,l):
    print(i)
('h', 1)
('e', 2)
('l', 3)
('l', 4)
('o', 5)
('!', 6)

lambda 匿名函数 可以取代简单函数,

lambda x:x**2

map 映射

l=[1,2,3,4]
m=map(lambda x:x**2,l)
print(list(m))
#[1, 4, 9, 16]

reduce 合并 需要加载模块 from functools import reduce

from functools import reduce
print(reduce(lambda x,y:x+y,range(100),100)) #最后的100 是初始值
#5050

filter 过滤

names=['alex_sb','yuanhao_sh','wupeiqi_sb','egon']
print(list(filter(lambda name:name.endswith('_sb'),names)))
#['alex_sb', 'wupeiqi_sb']

sorted 排序

l=[1,2,4,9,-1]
print(sorted(l)) #从小到大
print(sorted(l,reverse=True)) #从大到小

#[-1, 1, 2, 4, 9]
#[9, 4, 2, 1, -1]

递归调用

在调用一个函数的过程中,直接或者间接调用了该函数的本身
必须有明确的结束条件
每次递归,问题规模相比上一次减少
递归效率不高,递归过多,会导致
这里写图片描述

修改递归次数上限
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值