迭代器和生成器优点是可以解决内存不够,或者资源太大无法完成一步操作的问题,有能够缩小占用内存好处。下面我们分开来讲一下迭代器和生成器的构造以及把函数构造成一个生成器。
迭代器
迭代器可以用于列表,元组,集合以及字典
mlist = [1,2,3,4,5,6]
it = iter(mlist) #it迭代器,it索引为0
'''iter是一种类型,会自动记录索引次数'''
print(next(it)) #输出1
print(next(it)) #输出2
print(next(it)) #输出3
print(next(it)) #输出4
生成器
mylist = (x for x in range(100)) #mylist类型为生成器类型
print(next(mylist)) #输出为1
print(next(mylist)) #输出为2
print(next(mylist)) #输出为3
print(next(mylist)) #输出为4
将函数变为生成器
def go()
print(1)
yield 1 '''加上yield的函数返回值后,变成了一个生成器'''
print(3)
yidle 4
print(2)
yield 5
print(500)
yield 74
X = go()
print(next(x)) #第一次执行打印1,返回1
print(next(x)) #第二次执行打印3,返回4
print(next(x)) #第三次执行打印2,返回5
print(next(x)) #第四次执行打印500,返回74
**例如:**把函数构造成一个生成器
def createlist():
for i in range(100):
print(i)
yield i
Y = createlist() '''这时候Y就变成了生成器'''