本文共 1238 字,大约阅读时间需要 4 分钟。
字符串、列表、元组 可用于创建迭代器
next()和iter()函数示例
# Python3 迭代器'''字符串、列表、元组 可用于创建迭代器'''mList = [1, 2, 3, 4, 5]mIt = iter(mList)while True: try: print(next(mIt)) except StopIteration: break
运行结果
12345
生成器是返回迭代器的函数,只能用于迭代操作
在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时从当前位置继续运行
运行示例
# coding=utf-8#!/usr/bin/python# Python3 yield 生成器(generator)'''生成器是返回迭代器的函数,只能用于迭代操作在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值并在下一次执行next()方法时从当前位置继续运行''''''斐波那契前面2个数相加等于第3个数值的特征'''def fibonacci(n): a = 0 b = 1 temp = a counter = 0 while True: if(counter > n): return n print('遇到 next()就触发 返回 a = ', a) yield a ''' a,b = b,a+b 等效于 a=b b=a(原值)+b ''' temp = a a = b b = temp + b counter = counter + 1 print("大于2个 next()才触发 a = %d, b=%d" % (a, b))# 返回迭代器,例如 0 1 1 2 3 5 8 13 21 34 55f = fibonacci(10)next(f) # 0next(f) # 1next(f) # 1next(f) # 2next(f) # 3
运行结果
遇到 next()就触发 返回 a = 0大于2个 next()才触发 a = 1, b=1遇到 next()就触发 返回 a = 1大于2个 next()才触发 a = 1, b=2遇到 next()就触发 返回 a = 1大于2个 next()才触发 a = 2, b=3遇到 next()就触发 返回 a = 2大于2个 next()才触发 a = 3, b=5遇到 next()就触发 返回 a = 3
转载地址:http://jmcti.baihongyu.com/