繁体   English   中英

如何使用python生成器

[英]how to use python generators

今天,我在其他方面学习生成器迭代器等以节省内存,我认为宁愿将列表转储到内存中也更好,以便在需要时对其进行评估,因此我像在生成器下方进行了简单的测试。

def test(*args):
    for i in args:
        yield i

当我像下面一样使用它时,它会达到预期的效果。

for i in test(range(10)):
    print i

输出像这样

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

但是这个范围将所有数字转储到无法达到目的的功能中,所以我尝试了如下的xrange

for i in test(xrange(10)):
    print i

我得到这样一个相当令人惊讶的输出

xrange(10)

但从另一种角度来看,因为xrange仅在迭代时才会求值,所以我尝试强迫它这样做

for i in ye(*xrange(10)):
    print i

然后我得到这样的输出

o
1
.
.

有人可以详细解释发生了什么吗

在函数定义中使用*要求调用者向函数提供单独的参数。 考虑删除它并直接使用args

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM