PythonDay12

大憨熊 提交于 2019-11-27 13:47:07

day12内置_函数

今日内容

生成器

推导式

内置函数一

生成器

什么是生成器?生成器的本质就是一个迭代器

  • 迭代器是python自带的

  • 生成器是程序员自己写的一种迭代器

 

生成器编写方式:

  • 1.基于函数编写

  • 2.推导式方式编写

def func():    print('这是一个函数')    return '函数'func()​def func():    print("这是一个生成器")    yield '生成器'​# 坑!!!,其实这个生成器只能执行一个next,因为只有一个yieldfunc()              # 生成一个生成器print(func().__next__())        # 启动生成器print(func().__next__())# 上方这句代码的意思是:创建一个生成器并且执行一个next方法,两句一样但互不相干

函数体中出现yield代表要声明一个生成器

def func():    msg = input("请输入内容")    yield msg    print("这是第二次启动")    yield "生成器2"    yield "生成器3"    yield "生成器4"​g = func()print(next(g))print(next(g))print(next(g))print(next(g))      # 不能超过yield次数

 

yield和return的区别

相同点:

  • 都是返回内容

  • 都可以返回多次,但是return写多个只会执行一个

不同点:

  • return终止函数 yield是暂停生成器

  • yield能够记录当前执行位置

一个yield对应一个next

生成器的作用

# 生成器的作用是节省空间​# 可迭代对象:#   优点: list,tuple,str 节省时间,取值方便,使用灵活(具有自己私有方法)#   缺点: 大量消耗内存​# 迭代器:#   优点:节省空间#   缺点:不能直接查看值,使用不灵活,消耗时间,一次性,不可逆行​# 生成器:#   优点:节省空间,人为定义#   缺点:不能直接查看值,消耗时间,一次性,不可逆行​# 使用场景:# 1.当文件或容器中数据量较大时,建议使用生成器​# 数据类型 (pyhton3: range() | python2 :xrange()) 都是可迭代对象 __iter__()# 文件句柄是迭代器  __iter__() __next__()​没有send方法就是一个迭代器,具有send方法的就是一个生成器
def func():    lst = [1,2,3,45,6]    lst1 = ["alex","wusir","taibi","baoyuan"]    yield from lst    yield from lst1# yield 将可迭代对象一次性返回# yield from 将可迭代对象逐个返回​g = func()​for i in g:    print(i)

推导式

列表推导式:

普通循环print([i for i in range(10)])print([变量 for循环])​筛选lst = []print([i for i in range(10) if i % 2 == 0])print([i for i in range(10) if i > 2])[操作后的变量 for循环 判断操作]

集合推导式:

普通循环print({i for i in range(10)}){变量 for循环}筛选print({i for i in range(10) if i % 2 == 1}){操作后的变量 for循环 操作}

字典推导式:

普通循环print({i: i+1 for i in range(10)}){键:值 for循环}筛选模式print({i:i+1 for i in range(10) if i % 2 == 0}){操作的键:值 for循环 操作}

生成器推导式:

普通模式tu = (i for i in range(10))(变量 for循环)筛选模式tu = (i for i in range(10) if i > 5)(操作后的变量 for循环 操作)

内置函数一

all()       判断容器中的元素是否都为真any()       判断容器中的元素是否有一个为真bytes()     将字符串进行编码callable()  查看对象是否可  调用 == ()chr()       通过表位序号查找元素complex()   复数eval()      神器一exec()      神器二 神器禁止使用frozenset() 冻结集合globals()   查看全局空间变量hash()      区分可变数据类型和不可变数据类型help()      查看帮助信息id()        查看内存地址locals()    查看当前空间变量oct()       十进制转八进制ord()       通过元素获取当前unicode表位的序号pow()       幂,两个参数是求幂,三个参数时求幂后在取余repr()      查看数据的原生态round()     保留小数位divmod()    求商和余bin()       十进制转二进制
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!