Python笔记 -- 生成器

生成器:generator,需要的时候才产生结果,而不是立即产生结果。

生成器的底层是使用迭代器来实现的。

生成器比迭代器的使用更加的灵活。

#需求:构造一个包含100万条数据的列表
#方式一:
list=[]
for i in range(1000000):
    list.append(i)

#这种方式数据都存储在内存中,当数据量较大时,容易卡,容易造成内存异常。
#方式二 列表推导式
list2=[i for i in range(1000000)]

#跟方式一一样,只是不同的表达式
#方式三:迭代器
it=iter(range(1000000))

#占用内存很小,只有在使用时才会产生数据。
#方式四:定义生成器
#跟列表推导式相似,区别在于将列表推导式里的中括号变成小括号
gen = (i for i in range(1000000))
gen.__next__()

定义生成器:

方式一:使用小括号的方式,类似于列表推导式,只是将列表推导式里的中括号换成小括号。

方式二:使用生成器函数去定义,是一个带有特殊关键字yield的函数。

return和yield都可以返回值。

list=[]
def f(n):
    for i in range(n):
        list.append(i)
    return list
def f2(n):
    for i in range(n):
        yield i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值