# Python自学成才之路 迭代器的使用

```from collections import Iterable, Iterator
ret = isinstance([1, 2, 3], Iterable)
print(ret)

ret = isinstance((1, 2, 3), Iterable)
print(ret)

ret = isinstance("abc", Iterable)
print(ret)

ret = isinstance(123, Iterable)
print(ret)

True
True
True
False```

```from collections import Iterable, Iterator

class MyRangeIterator(object):
def __init__(self, start, end):
self.index = start
self.end = end

def __iter__(self):
return self

myrange = MyRangeIterator(1, 2)
print(isinstance(myrange, Iterable))

for x in myrange:
print(x)

True
Traceback (most recent call last):
File "D:/pycharm workspace/oopdemo/iterator_generator/IteratorDemo03.py", line 22, in <module>
for x in myrange:
TypeError: iter() returned non-iterator of type 'MyRangeIterator'```

```class MyRangeIterator(object):
def __init__(self, start, end):
self.index = start
self.end = end

def __iter__(self):
return self

def __next__(self):
if self.index < self.end:
temp = self.index
self.index += 1
return temp
else:
raise StopIteration()

myrange = MyRangeIterator(1, 3)
print(isinstance(myrange, Iterable))

for x in myrange:
print(x)

True
1
2```

`print(next(myrange))`

```myrange = MyRangeIterator(1, 3)
print(isinstance(myrange, Iterable))

for x in myrange:
print(x)

for y in myrange:
print(y)

True
1
2```

```class MyRangeIterator(object):
def __init__(self, start, end):
self.index = start
self.end = end

def __iter__(self):
return self

def __next__(self):
if self.index < self.end:
temp = self.index
self.index += 1
return temp
else:
raise StopIteration()

class MyRange(object):

def __init__(self, start, end):
self.start = start
self.end = end

def __iter__(self):
return MyRangeIterator(self.start, self.end)

ret = MyRange(1, 3)
for x in ret:
print(x)
print("="*10)
for y in ret:
print(y)

1
2
==========
1
2```

0 条评论

• ### Python自学成才之路 分布式计算解决方案actor

以下内容来自于cookbook，个人觉得这篇文章对于设计分布式计算任务有一定的借鉴意义，感兴趣的同学可以阅读原文： https://python3-cookb...

• ### python自学成才之路 列表，元组，集合详细用法

python列表使用[]表示，它实际上是一个数组，但是和一般数组不同的地方在于它内部封装了很多很好用的方法（比如append，pop）以及一些特性（比如切片，不...

• ### Python自学成才之路 魔术方法之一元，二元运算符

一元运算符有+，-，~等，要想使这些一元运算符对对象起作用，需要在定义类的时候实现对应的魔术方法。

• ### python的迭代对象

迭代对象这个概念是python里面非常核心的东西，我想跟大家分享一下，什么是可迭代对象。

• ### Antd Vue的MonthPicker组件不能用，提示注册的解决方法

项目中需要用到 Ant Design 的 MonthPicker 月份组件，但是不能用，引入后组件不能正常显示，控制台报错： vue.esm.js?efeb:6...

• ### HDU 4135 Co-prime(容斥原理)

Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

• ### 使用卷积深度神经网络和PyTorch库对花卉图像进行分类

语言图像数据是深度学习技术的一种非常流行的用法。在本文中将讨论使用深度卷积神经网络识别花卉图像。

• ### Rust Async: smol源码分析-Executor篇

本文来自知乎：https://zhuanlan.zhihu.com/p/137353103