Python-生成器(generator)

本文介绍了Python生成器的概念,它是一种边循环边计算的机制,具备__iter__和__next__方法。生成器可通过for循环、__next__()方法、send方法或数据类型转换来调用。生成器的实现方式包括使用括号代替列表推导式的方括号以及使用yield关键字。yield from关键字解决了yield嵌套循环的问题。文中通过一个具体的例子分析了生成器如何在不同情况下进行运算,揭示了生成器在代码执行流程中的行为特点。
摘要由CSDN通过智能技术生成

1.定义:边循环边计算的机制,是一种特殊类型的迭代器,所以也会有__iter__和__next__方法,会在遍历过程中单独读取某一行的数据到内存

2.调用方式:

(1)for循环,for循环的本质就是调用了__iter__和__next__方法进行了迭代

(2)调用__next__()方法

(3)调用send方法

(4)数据类型强制转换,比如使用list()强制转换

3.两种实现方式:

(1)列表推导式外层的方括号改成圆括号

l1=[x*x for x in range(5)]
l2=(x*x for x in range(5))
print(type(l1))  #<class 'list'>
print(type(l2))  #<class 'generator'>
print(l1)  #[0, 1, 4, 9, 16]
print(l2)  #<generator object <genexpr> at 0x032EED48>
print(list(l2))  #[0, 1, 4, 9, 16]
print(list(l2))  #[]--这是由于前面已经取完了

(2)yield关键字

#yield关键字
def my_print1(n):
    for i in range(n):
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值