对于字典,我可以使用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
答案 0 :(得分:16)
所有这些都很好,除了拼写错误 - 你可能意味着:
x = Counter(3,8)
for i in x:
print i
而不是
x = Counter(3,8)
for i in x:
print x
答案 1 :(得分:8)
我认为您的实际问题是print x
print i
iter()
用于获取给定对象的迭代器。如果你有一个__iter__
方法来定义它实际会做什么。在您的情况下,您只能在柜台上迭代一次。如果您定义__iter__
以返回一个新对象,那么它将使您可以根据需要迭代多次。在你的情况下,Counter已经是一个迭代器,这就是回归自己的原因。