Python使用count()初始化迭代器

2024-04-26 23:09:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解素数迭代器是如何工作的,代码取自一次讲座。 我搜索了count(),但只找到了列表、对象的方法,我只是不明白self._candidates = count(1)行是如何工作的,它意味着什么。 我们要数到1的物体在哪里?它的进一步使用也很混乱。 我主要用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

Tags: 代码selfreturnobjectinitdefcountitem
1条回答
网友
1楼 · 发布于 2024-04-26 23:09:35

可能这是^{},一条线

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()只是python2。为了与python2和python3兼容,请改用next(counter)。你知道吗

相关问题 更多 >