迭代器
- 运行步骤:
1.可迭代对象通过__iter__拿到迭代器 2.执行迭代器的__next__拿到元素,反复执行,直到取到最后一个元素
lst = ["Baidu", "Google"]
it = lst.__iter__()
print(it.__next__())
print(it.__next__())
print(it.__next__())
lst = ["Baidu", "Google", "JD"]
it = lst.__iter__()
while True:
try:
print(it.__next__())
except StopIteration:
break
生成器
生成器的本质就是迭代器,将函数中的return换成yield就成为生成器函数 – 里面有yield – 生成器函数在执行时,实际上是创建一个生成器出来 – 须使用__next__()来执行代码,到下一个yield结束 – yield相当于返回,让一个函数分段执行 – 当执行到最后一个yield时,再次执行__next__()会报错StopIteration
def order():
lst = []
for i in range(1000):
lst.append(f"第{i}块糖")
if len(lst) == 50:
yield lst
lst = []
lst = order()
print(lst.__next__())
print(lst.__next__())
- 生成器表达式
基本语法:(结果 for循环 if)
gen = (result for result in range(10))
for item in gen:
print(item)
print(list(gen))
def func():
print(111)
yield 222
g = func()
g1 = (i for i in g)
g2 = (i for i in g1)
print(list(g))
print(list(g1))
print(list(g2))
|