1、迭代器:就是可迭代对象。
迭代器是指用iter(obj)函数返回的对象(实例)
迭代器是指用next(it)函数获取可迭代对象的数据
NO.1
info = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a=map(lambda x:x+1,info)
print(a) #返回迭代器,可以循环遍历 ==><map object at 0x0000022CCC136978>
NO.2直接将列表info返回对象,调用next方法
res=info.__iter__()
print(info.__iter__()) ==><list_iterator object at 0x000001F1DD541908>
print(info.__iter__().__next__()) ==>0
2、生成器(generator):一边循环一边计算的机制,占用空间少
NO.1将列表的中括号[ ]换成小括号( ),就创建了一个生成器,也是迭代器一种
generator_ex = (x*x for x in range(10))
print(generator_ex) ==><generator object <genexpr> at 0x00000196E1E335E8>
print(generator_ex.__next__()) ==>0
print(next(generator_ex)) ==>1
NO.2带有yield的,就不是一个普通的函数,而是generator,可以循环遍历
def test():
for i in range(5):
yield i
print(test()) ==><generator object test at 0x00000141411E35E8>
print(test().__next__()) ==>0