Discuss / Python / 前端学习Python

前端学习Python

Topic source

不息。

#1 Created at ... [Delete] [Delete and Lock User]

一边循环一边计算的机制,称为生成器:generator

优点:不必创建完整的list,从而节省大量的空间

# 把一个列表生成式的[]改成(),就创建了一个generator>>> L = [x * x for x in range(10)]>>> L[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>> g<generator object <genexpr> at 0x1022ef630>​# 遍历generator不常用写法:通过next()函数获得generator的下一个返回值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。>>> print(next(g))​# 遍历generator常用写法:使用for循环遍历generator>>> for n in g:...     print(n)​# 通过异常捕获,处理next()到最后没有值的情况,也能获取到结束值e.value = 'done'>>> while True:...     try:...         x = next(g)...         print('g:', x)...     except StopIteration as e:...         print('Generator return value:', e.value)...         break

普通函数转变为generator函数方式:增加yield,next()遇见yield就会返回,再次next()就再次从yield处继续执行。


  • 1

Reply