生成器:
1.在我们使用列表时,很多时候我们不会一下子使用数据,通常都是一个一个使用,当数据量较大的时候,定义一个列表会使程序内存占用突然增大,为了解决此类问题,python中引入了生成器。
2.生成方式:
方式一:将列表生成式的[]改为()
#列表生成式
# lt = [i for i in range(10)]
# print(lt)
lt = (i for i in range(10))
print(lt)
方式二:在函数中使用yield关键字
def test(n):
for i in range(1,n+1):
#执行到此处,函数会返回yield后的内容,然后会停止在这里
yield i
t = test(3)
print(t)
使用时需注意:
生成器对象保存的是特定数据的生成算法,而不是特定的所有数据
使用任意一种方式操作,都是单次的
生成器可以做的操作:遍历、next、转换为列表
迭代器:
定义:能够使用for-in进行遍历,并且可以使用next函数进行迭代的对象
说明:生成器是一种特殊的迭代器
判断一个对象是不是迭代器:
from collections import Iterator
#判断是否是迭代器
print(isinstance(lt,Iterator))
可迭代对象:字符串及容器类型的对象都是可迭代对象
判断一个对象是不是可迭代对象:
from collections import Iterable
lt = [1,2,3]
#判断是否是可迭代对象
print(isinstance(lt,Iterable))
iter:可以将可迭代对象转换为迭代器
lt = [1,2,3]
lt2 = iter(lt)