python-迭代器、生成器

生成器属于迭代器

适合迭代器对象:list、dict、tuple、set、str

不适合迭代对象:int、float、bool

迭代器例子

a = [0,1,2,3]

iter(a) # 用iter()方法生成迭代对象

print(next(a)) #用next来查询,直到超范围

判读对象是否符合迭代例子

from collections import Iterable

a = [0,1,2,3]

b = 123

print(isinstance(a, Iterable))  #运用isinstance函数来判断,此结果为True,符合迭代

print(isinstance(a, Iterable)) #同上,此结果为Flase,不符合迭代

生成器例子

a = (i  for i in range(1000000))  #想当与列表生成式的[]改成(),此时a的类型为生成器(generator)

print(next(a))  #用next()来查询

函数进化成生成器:(把return改成yield)

例子:

def f(n):
for i in range(n):
yield i
     print('OKOK')

a = f(5) #定义一个变量来接受生成器的返回值
print(next(a)) #程序运行达到yield后就会停止,不会往下执行,所以只打印0
print(next(a)) #程序从上个断点yield开始执行,所以先打印'OKOK',在打印1,然后停止
print(next(a))
print(next(a))
print(next(a))
# print(next(a))

或者用 for循环来打印(一次全部打印完,防止用next()方法来超范围报错)
for i in range(a):
  print(i)




猜你喜欢

转载自www.cnblogs.com/lovesix/p/11902207.html
今日推荐