设为首页 加入收藏

TOP

在python中实现使用迭代生成器yield减少内存占用的方法(二)
2023-07-23 13:28:22 】 浏览:29
Tags:python 成器 yield 方法
e_sum.py:10: size=76 B, count=2, average=38 B yield_square_sum.py:15: size=28 B, count=1, average=28 B

经过比较我们发现,两种方法的计算时间是几乎差不多的,但是在内存占用上yield有着明显的优势。当然,也许这个例子并不是非常的恰当,但是本文主要还是介绍yield的使用方法及其应用场景。

3.无限长迭代器

在参考链接1中提到了一种用法是无限长的迭代器,比如按顺序返回所有的素数,那么此时我们如果用return来返回所有的元素并存储到一个列表里面,就是一个非常不经济的办法,所以可以使用yield来迭代生成,参考链接1中的源代码如下所示:

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def get_primes(number):
    while True:
        if is_prime(number):
            yield number

        number += 1

那么类似的,这里我们用while True可以展示一个简单的案例——返回所有的偶数:

def yield_range2(i):
    while True:
        yield i
        i += 2
 
iter = yield_range2(0)
for i in range(10):
    print (next(iter))

因为这里我们限制了长度是10,所以最终会返回10个偶数:

[dechin@dechin-manjaro yield]$ python3 yield_iter.py 
0
2
4
6
8
10
12
14
16
18

4.总结

本文介绍了python的迭代器yield,其实关于yield,我们可以简单的将其理解为单个元素的return。这样不仅就初步理解了yield的使用语法,也能够大概了解到yield的优势,也就是在计算过程中每次只占用一个元素的内存,而不需要一直存储大量的元素在内存中。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇51.pyinstaller打包后,打开exe程.. 下一篇Python Django Web开发实战

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目