对于字典,我可以使用iter()迭代字典的键。

y = {"x":10, "y":20}
for val in iter(y):
    print val

当我使用下面的迭代器时,
class Counter:
    def __init__(self, low, high):
        self.current = low
        self.high = high

    def __iter__(self):
        return self

    def next(self):
        if self.current > self.high:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1

我为什么不能这样用呢
x = Counter(3,8)
for i in x:
    print x

也不
x = Counter(3,8)
for i in iter(x):
    print x

但这条路呢?
for c in Counter(3, 8):
    print c

iter()函数的用法是什么?
补充
我想这可能是使用iter()的方法之一。
class Counter:
    def __init__(self, low, high):
        self.current = low
        self.high = high

    def __iter__(self):
        return self

    def next(self):
        if self.current > self.high:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1

class Hello:
    def __iter__(self):
        return Counter(10,20)

x = iter(Hello())
for i in x:
    print i

最佳答案

所有这些工作都很好,除了打字错误——你可能是说:

x = Counter(3,8)
for i in x:
    print i

而不是
x = Counter(3,8)
for i in x:
    print x

关于python - Python中的迭代器(iter())函数。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3938927/

10-15 01:33