python使用迭代生成器yield减少内存占用的方法

嗨喽,大家好呀~这里是爱看美女的茜茜呐

在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。

其实这本没有必要,因为这些参量很有可能是一次性使用的,

甚至很多场景下这些参量是不需要同时存储在内存中的,

这时候就会用到本文所介绍的迭代生成器yield。


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可


1.基本使用

首先我们用一个例子来演示一下迭代生成器yield的基本使用方法,这个例子的作用是构造一个函数用于生成一个平方数组02,12,22…。

在普通的场景中我们一般会直接构造一个空的列表,然后将每一个计算结果填充到列表中,最后return列表即可,对应的是这里的函数square_number。

而另外一个函数square_number_yield则是为了演示yield而构造的函数,其使用语法跟return是一样的,不同的是每次只会返回一个值:

def square_number(length):
    s = []
    for i in range(length):
        s.append(i ** 2)
    return s
 
def square_number_yield(length):
    for i in range(length):
        yield i ** 2
 
if __name__ == '__main__':
    length = 10
    sn1 = square_number(length)
    sn2 = square_number_yield(length)
    for i in range(length):
        print (sn1[i], '\t', end='')

        print (next(sn2))

在main函数中我们对比了两种方法执行的结果,打印在同一行上面,

用end=''指令可以替代行末的换行符号,具体执行的结果如下所示:

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
[dechin@dechin-manjaro yield]$ python3 test_yield.py 
0       0
1       1
4       4
9       9
16      16
25      25
36      36
49      49
64      64

81      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值