day14 Pyhton学习

一.迭代器-概念

  可迭代协议:内部含有__iter__方法的值/变量都是可迭代的

  如何得到一个迭代器:可迭代变量.__iter__()返回一个迭代器

  迭代器协议:内部含有__iter__方法和__next__方法的值/变量都是迭代器

  迭代器的特点:节省内存,惰性运算,一次性取值,只能按顺序取

  可迭代和迭代器的关系:

     所有的迭代器都是可迭代的,反之不成立

     迭代器是特殊的存在

  for循环和迭代器的关系:

     无论是可迭代的还是迭代器都是可以被for循环

     如果直接循环迭代器,那么循环一次就没有了

     如果循环的非迭代器,那么每一次循环都相当于从头到尾的循环

      因为在for循环中的所有非迭代器都会通过iter生成一个新的迭代器

l = [1,2,3,4]
res1 = l.__iter__()
res2 = l.__iter__()
# res1和res2都是迭代器
# 是两个完全不同的迭代器
用while循环实现一个for循环的功能(循环list/dict)
# l = [1,2,3,5,6,7,12,23,412]
# l_iter = l.__iter__()
# while True:
#     try:   # 要保护的代码
#         print(l_iter.__next__())
#     except StopIteration:  # 要保护的代码中一旦出现了StopIteration错误,程序不报错,直接执行break
#         print('报错啦')
#     break

    

原文地址:https://www.cnblogs.com/pythonz/p/9911658.html