python中 iter_Python中的迭代器(iter())函数。

这篇博客探讨了Python中迭代器的工作原理,通过一个自定义的Counter类展示了如何实现迭代器。作者指出,对于字典,可以使用iter()遍历其键,但对于自定义迭代器,如Counter类,可以直接通过for循环进行迭代,而不需要额外调用iter()。博客中还纠正了一个在使用for循环遍历Counter实例时的typo错误,并提供了正确的示例。
摘要由CSDN通过智能技术生成

For dictionary, I can use iter() for iterating over keys of the dictionary.

y = {"x":10, "y":20}

for val in iter(y):

print val

When I have the iterator as follows,

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

Why can't I use it this way

x = Counter(3,8)

for i in x:

print x

nor

x = Counter(3,8)

for i in iter(x):

print x

but this way?

for c in Counter(3, 8):

print c

What's the usage of iter() function?

ADDED

I guess this can be one of the ways of how iter() is used.

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

解决方案

All of these work fine, except for a typo--you probably mean:

x = Counter(3,8)

for i in x:

print i

rather than

x = Counter(3,8)

for i in x:

print x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值