python中的生成器与迭代器

生成器:
1.在我们使用列表时,很多时候我们不会一下子使用数据,通常都是一个一个使用,当数据量较大的时候,定义一个列表会使程序内存占用突然增大,为了解决此类问题,python中引入了生成器。
2.生成方式:
方式一:将列表生成式的[]改为()

#列表生成式
# lt = [i for i in range(10)]
# print(lt)

lt = (i for i in range(10))
print(lt)

方式二:在函数中使用yield关键字

def test(n):
    for i in range(1,n+1):
        #执行到此处,函数会返回yield后的内容,然后会停止在这里
        yield i

t = test(3)
print(t)

使用时需注意:
生成器对象保存的是特定数据的生成算法,而不是特定的所有数据
使用任意一种方式操作,都是单次的
生成器可以做的操作:遍历、next、转换为列表

迭代器:
定义:能够使用for-in进行遍历,并且可以使用next函数进行迭代的对象
说明:生成器是一种特殊的迭代器
判断一个对象是不是迭代器:

from collections import Iterator
#判断是否是迭代器
print(isinstance(lt,Iterator))

可迭代对象:字符串及容器类型的对象都是可迭代对象
判断一个对象是不是可迭代对象:

from collections import Iterable
lt = [1,2,3]
#判断是否是可迭代对象
print(isinstance(lt,Iterable))

iter:可以将可迭代对象转换为迭代器

lt = [1,2,3]
lt2 = iter(lt)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值