生成器/内置函数

生成器

本质就是迭代器,手动写的迭代器

生成器的产生方式

生成器函数

def func():
    print (123)
    yield '生成器'
func() ## 执行结果 :没有结果
'''******'''
ret = func() ## 这个过程相当于 实例化对象
'''******'''
print(ret) #<generator object func at 0x000002A9298C3F48>生成器对象
# 想执行这个 要用next() 和迭代器一样 或者遍历它
next(ret) ## 123
print(next(ret)) ## 111 2 # 如果生成器中没有yield了,再调用next会报错

yield

阻塞

return 和 yield

## return 结束函数,给函数的执行者返回值
## yield 不结束函数,给next(func()) 返回值

yield from

def func():
    l = [1,2,3]
    yield from l
fun = func()
print (next(fun)) # 1
print (next(fun))# 2
print (next(fun))# 3,
## 取代了for循环,将可迭代对象中的每一项元素依次取出来

匿名函数

lambda x,y:x+y

列表推导式 生成器表达式

## 列表推导式
l = [i for i in iterable if i...]

## 一行代码实现九九乘法表
'\n'.join([' '.join([f'{j}*{i}={j*i}'for j in range(1,i+1)]) for i in range(1,10)])
# 生成器表达式
obj = (i for i in iterable if i...)
## 取值方式
# 第一种
print(next(obj))
# 第二种
for i in obj:
    print(i)
# 第三种
print (list(obj))

内置函数

# 参数列表可以放key的
min()
max()
sorted()
# 例如  min()
dic = {'a':1,'b':2,'c':3,'d':0}
print(min(dic)) # 此时返回的结果为 a
print (min(dic,key=lambda x:x))  ## 相当于将dic遍历传入 lambda表达式(函数)中,return 的是什么就按照什么比较,这个x是dic的key,所以返回的也是字典的key 

原文地址:https://www.cnblogs.com/albert0823/p/11060953.html

时间: 2024-11-08 20:52:56

生成器/内置函数的相关文章

13t天 迭代器,生成器,内置函数

上周复习: 函数的递归调用 函数调用时函数嵌套调用的一种特殊形式 函数在调用时,直接或间接调用了自身,就是梯归调用. 直接调用自身 def f1():   print('from f1')   f1()f1() 间接调用函数 def f1():   print('from f1')   f2()?def f2():   print('from f2')   f1()f1() 梯归 递归应该分为两个明确的阶段,回溯与递推. 回溯就是从外向里一层一层递归调用下去,回溯阶段必须要有一个明确地结束条件,

迭代器 生成器 内置函数

1.迭代器 迭代取值的工具 s = 'hello' n = 0 while n < len(s): print(s[n]) # h e l l o n += 1# 每一次迭代都是基于上一次的结果而来的 能够迭代取值的数据类型:字符串.列表.元组.集合.字典 可迭代对象:只有内置有__iter__方法的都叫可迭代对象 可迭代对象有 str list tuple dict set,文件对象本身就是迭代器对象 可迭代对象执行内置的__iter__方法得到的就是该对象的迭代器对象 迭代器对象:内置__i

函数嵌套 ,名称空间与作用域 ,闭包函数 ,装饰器 ,迭代器, 生成器 三元表达式,列表解析,生成器表达式 递归与二分法, 内置函数

函数嵌套名称空间与作用域闭包函数装饰器迭代器生成器三元表达式,列表解析,生成器表达式递归与二分法内置函数--------------------------------------------函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数def max(x,y): if x>y: return x else: return ydef max1(a,b,c,d): res=max(a,b) res2=max(res,c) res3=ma

三元运算式、lambda表达式、内置函数map、reduce、filter以及yield生成器

一.三元运算(式) 对于一般简单的if else条件判断句可以用三元运算来表示 具体模式为: if condition:   expr1 else:   expr2 等价于: expr1 if condition else expr2 解释:如果if condition条件成立就执行expr1表达式,否则就执行else expr2表达式 示例① >>> if 2 == 2: ...    name = 'cool' ... else: ...    name ='hot' ...  &g

装饰器、生成器、迭代器、及python中内置函数的使用

一. 装饰器 1. 装饰器的概述 (1)概述:装饰器本质就是函数,主要用来装饰其他函数,为其他函数添加附加功能. (2)使用装饰器的原则 1)不能修改被装饰的函数的源代码 2)不能修改被装饰的函数的调用方式 (3)装饰器原理:函数即"变量".高阶函数.嵌套函数 2.使用装饰器的原因 (1)传统的多个函数模块修改需要同时修改多个函数.如果函数过多,则修改不方便. 如下,如果想要在每个函数中开头结尾分别输入内容,则需要在每个函数开头结尾加入需要输出的内容. def f1():     pr

Python基础------生成器表达式形式、面向过程编程、内置函数部分

生成器表达式形式 直接上代码 1 # yield的表达式形式 2 def foo(): 3 print('starting') 4 while True: 5 x=yield #默认返回为空,实际上为x=yield None 6 print('value',x) 7 g=foo() 8 print(g.__next__()) #停到yield位置,生成器初始化,遇到yield返回一个None 9 print('---分割线君---') 10 print(g.send(1)) #传值给yield,

python基础之生成器表达式形式、面向过程编程、内置函数部分

生成器表达式形式 直接上代码 1 # yield的表达式形式 2 def foo(): 3 print('starting') 4 while True: 5 x=yield #默认返回为空,实际上为x=yield None 6 print('value',x) 7 g=foo() 8 print(g.__next__()) #停到yield位置,生成器初始化,遇到yield返回一个None 9 print('---分割线君---') 10 print(g.send(1)) #传值给yield,

python学习--装饰器、生成器、内置函数、json

这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面每个函数都加一个功能,用来统计每个函数的运行时间是多少,找出来运行比较慢的函数,来优化代码,就需要添加一个新的功能,来统计程序的运行时间,那这样的话,就得修改每个函数了,需要改代码,但是代码特别多,改完了公司倒闭了,这时候装饰

python学习笔记(五):装饰器、生成器、内置函数、json

这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面每个函数都加一个功能,用来统计每个函数的运行时间是多少,找出来运行比较慢的函数,来优化代码,就需要添加一个新的功能,来统计程序的运行时间,那这样的话,就得修改每个函数了,需要改代码,但是代码特别多,改完了公司倒闭了,这时候装饰