| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # -*- coding: UTF-8 -*-
- # 迭代器(iterator)
- l2 = [1,2,3]
- "__iter__" in dir(l2) # 可迭代对象
- l2_iter = iter(l2)
- l2_iter.__next__() # 迭代器
- # import dis
- # li = [1,2]
- # dis.dis("for i in li: print(i)") #
- """
- 什么是迭代器,它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,
- 任何实现类__iter__ 和 __next__() ( python2中实现next() )方法的对象都是迭代器,
- __iter__ 返回迭代器自身,__next__返回容器中的下一个值,如果容器中没有更多元素类,
- 则会抛出 StopIteration 异常
- ==============================================
- 迭代器有一个内部状态的字段,用于记录下次迭代返回的结果,
- 它实现了 __next__ 和 __iter__ 方法,
- 迭代器不会一次性把所有的元素加载到内存,而是需要的时候才生成,并返回结果
- """
- #======================= 示例 =========================#
- # 迭代器对象可以使用常规for语句进行遍历:
- # 实例(Python 3.0+)
- #!/usr/bin/python3
-
- list=[1,2,3,4]
- it = iter(list) # 创建迭代器对象
- for x in it:
- print (x, end=" ")
- #======================= 使用 next() =========================#
- #!/usr/bin/python3
-
- import sys # 引入 sys 模块
-
- list=[1,2,3,4]
- it = iter(list) # 创建迭代器对象
-
- while True:
- try:
- print (next(it))
- except StopIteration:
- sys.exit()
- # 生成器
- def gen_fun():
- yield from range(5)
- gen_fun()
|