生成器/内置函数

生成器

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

生成器的产生方式

生成器函数

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 

猜你喜欢

转载自www.cnblogs.com/albert0823/p/11060953.html