微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有无限迭代器的表达式?

如何解决是否有无限迭代器的表达式?

for x in iter(int, 1): pass

  • 二参数iter=零参数可调用+哨兵值
  • int() 总是回来 0

因此,iter(int,1)一个无限的迭代器。显然,此特定主题有很多变体(尤其是一旦您添加lambda到组合中)。特别注意的一个变体是iter(f,object()),因为使用新创建的对象作为哨兵值几乎可以保证无限迭代器,而与用作第一个参数的可调用对象无关。

解决方法

是否有可以产生无限迭代器的简单表达式?

这是一个纯粹的理论问题。此处无需“实用”答案:)


例如,使用生成器表达式创建有限迭代器很容易:

my_gen = (0 for i in xrange(42))

但是,要制作无限个,我需要使用虚假函数“污染”我的命名空间:

def _my_gen():
    while True:
        yield 0
my_gen = _my_gen()

在单独的文件中做事,import以后-ing不计算在内。


我也知道这itertools.repeat完全可以做到。我很好奇是否有没有这种情况的一线解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。