菜鸡眼中的迭代器

'''
迭代器
'''
#迭代:依次从数据结构取值
'''
for循环的迭代过程:
for 迭代对象 in 可迭代对象.
'''
#使用for循环迭代
li = [1,2,3,4,5,6,7,8]
for i in li:
    print(i)

#使用while循环迭代
li = [1,2,3,4,5,6,7,8]
index = 0
while index < len(li):
    print(li[index])
    index +=1

#生成迭代器的方法:
'''
1:iterator = iter(li) 使用iter方法
2:iterator = li._iter_() 使用_iter_魔法方法

'''
a = iter([1,2,3,4,5,6])#使用iter方法或者 a = li.__iter__() #使用魔法方法
# print(a) #<list_iterator object at 0x0000022C596F3320>列表的迭代器对象
# for i in a:
#     print(i)
#迭代器和可迭代对象有何区别?迭代器中有next方法,而可迭代对象中没有next方法,具体用dir方法查询即可。
print(next(a)) #或者print(a.__next__())。
print(next(a))

#--------------自定义迭代器---重写iter方法即可-----------------------------------
class Mylist:
    def __iter__(self):
        return iter([1,2,3,4,5,6]) #返回的必须是一个迭代器

a = Mylist() #实例化时已经是可迭代对象

for i in a: #迭代实例对象时,触发魔法方法
    print(i)

 

posted @ 2019-04-05 14:11  上古战神  阅读(107)  评论(0编辑  收藏  举报