DAY 23 内置函数 递归调用

来源:互联网 发布:c 语言应用领域 编辑:程序博客网 时间:2024/05/29 04:41

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

import timeimport randomdef init(func):    def wrapper(*args,**kwargs):        g=func(*args,**kwargs)        next(g)        return g    return wrapperdef producer(target,count):    for i in range(count):        target.send('baozi%s' %i)@initdef 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 reduceprint(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]

递归调用

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

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

原创粉丝点击