python之Iterator、Iterable

class Vector:   #类似于Iterable实现类
def __init__(self,data,choice):
self.data=data
self.choice=choice

def __iter__(self): #实现后,取Iterator
if self.choice==0:
return Vector_Iterator0(self.data)
else:
return Vector_Iterator1(self.data)

class Vector_Iterator0: #Iterator实现类
def __init__(self,data):
self.data=data
self.index=-2

def __next__(self): #遍历奇数位
if self.index<len(self.data)-2:
self.index = self.index + 2
r=self.data[self.index]
return r
else:
raise StopIteration

class Vector_Iterator1: #Iterator实现类
def __init__(self,data):
self.data=data
self.index=-1

def __next__(self): #遍历偶数位
if self.index<len(self.data)-2:
self.index = self.index + 2
r=self.data[self.index]
return r
else:
raise StopIteration

v=Vector([10,20,30,40,50,60,70,80],0)

for i in v:
print(i)

运行结果:
0:遍历奇数

10
30
50
70


1:遍历偶数

20
40
60
80

posted @ 2020-06-01 16:38  tonnysz  阅读(134)  评论(0)    收藏  举报