使用count()的Python Primes迭代器

时间:2017-08-16 10:49:33

标签: python iterator primes

我试图理解素数迭代器是如何工作的,代码来自一个讲座。 我搜索了count(),但只找到了列表,对象的方法,我只是不明白行self._candidates = count(1)是如何工作的以及它意味着什么。 我们试图计算的对象在哪里?而self._candidates.next()的进一步使用也令人困惑。 我主要编写java代码,虽然知道基本的python。 这是代码:

class Primes(object):
    def __init__(self):
        self._candidates = count(1)
    def __iter__(self): return self
    def next(self):
        item = self._candidates.next()
        if item > 1:
            self._candidates = FilterMultiplies(self._candidates, item)
        return item

class FilterMultiplies(object):def __init__(self, seq, n):
    self._seq = iter(seq)
        self._n = n
    def __iter__(self): return self
    def next(self):
        item = self._seq.next()
        while item % self._n == 0:
            item = self._seq.next()
        return item

1 个答案:

答案 0 :(得分:2)

可能这是itertools.count和一行

from itertools import count
列表中缺少

Python中的

Generators与Java中的Iterator相当。调用count(1)返回一个从1开始向上计数的生成器:

>>> from itertools import count
>>> counter = count(1)
>>> counter.next()
1
>>> counter.next()
2
>>> counter.next()
3

请注意,counter.next()仅限Python 2。为了兼容Python 2和3,请改用next(counter)