迭代器(iterator)
迭代器一定是可以迭代的,可迭代的不一定是迭代器
可以通过isinstance()判断是否可迭代
isinstance([],Iterable) #返回boolean
迭代器的两个基本方法iter(),next()
提示:next()是python2的方法,在python3中使用会报AttributeError
list = [1,2,3,4]
it = iter(list)
#方法一
for i in it: #for循环遍历,在python中for循环会自动调用next
print(i)
#方法二
it.__next__()
生成器(Generator)
相当于一个特殊的迭代器,和普通函数不同的是,生成器是一个返回迭代器的函数,每一次遇到yield函数是会暂停保存当前的运行信息,返回yield的值,并在下一次执行next()方法的时候从当前位置继续运行
包含yield()函数的一定是生成器,包含yield的函数是生成器函数,调用生成器函数创建一个生成器,如下边的代码中的test
生成器函数:
def myYield():
print("将生成a")
yield "a"
print("将生成b")
yield "b"
print("将生成c")
yield "c"
test = myYield()
生成器表达式: