我试图理解素数迭代器是如何工作的,代码来自一个讲座。
我搜索了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
答案 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)
。