千家信息网

Python3的生成器和迭代器代码怎么写

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Python3的生成器和迭代器代码怎么写",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python3的生成器和迭代器代码怎么写"吧!1.
千家信息网最后更新 2026年11月01日Python3的生成器和迭代器代码怎么写

本篇内容主要讲解"Python3的生成器和迭代器代码怎么写",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python3的生成器和迭代器代码怎么写"吧!

1.生成器

# 一边循环一边计算的机制,称为生成器:generator;# 创建generator方法:# 1.把一个列表生成式的[]改成()numsList = [num * num for num in range(10)]print("列表生成式生成numsList:",numsList)numsGenerator = (num * num for num in range(10))print("生成器生成numsGenerator:",numsGenerator)# 使用next()函数获得generator的下一个返回值print("打印numsGenerator第一个元素:",next(numsGenerator))print("打印numsGenerator第二个元素:",next(numsGenerator))print("--------------------------------------------------------")# 使用for循环打印generator元素print("使用循环打印生成器中的元素!")for num in numsGenerator:    print(num,end = " ")print("\n")print("--------------------------------------------------------")# 斐波拉契数列(Fibonacci):除第一个和第二个数外,任意一个数均可由前两个数相加得到# 1,1,2,3,5,8,13,21,34def fibonacci(num):    n, a, b = 0, 0, 1    while n < num:        print(b,end = "  ")        a, b = b, a + b        n = n + 1    return "Done"print("Fibonacci前10项为:")fibonacci(10)print("\n")print("--------------------------------------------------------")# 2.把fibonacci()函数变成generator函数def fibonacci(num):    n, a, b = 0, 0, 1    while n < num:        yield b        a, b = b, a + b        n = n + 1    return "Done"# Tips:# 1.如果一个函数定义中包含yield关键字,则这个函数是一个generator函数;# 2.调用一个generator函数将返回一个generator;fib = fibonacci(10)print("fib的值:",fib)

# 结果输出:
列表生成式生成numsList: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
生成器生成numsGenerator: at 0x0000028F0E6ACB88>
打印numsGenerator第一个元素: 0
打印numsGenerator第二个元素: 1
--------------------------------------------------------
使用循环打印生成器中的元素!
4 9 16 25 36 49 64 81

--------------------------------------------------------
Fibonacci前10项为:
1 1 2 3 5 8 13 21 34 55

--------------------------------------------------------
fib的值:

# 普通函数和generator函数的执行流程:# 1.普通函数:顺序执行,遇到return语句或最后一行函数语句就返回;# 2.generator函数:在每次调用next()的时候执行,遇到yield语句返回;# 3.再次执行时从上次返回的yield语句处继续执行;# 实例:定义一个generator函数,依次返回"Willard",18,"Engineer"def willardInfo():    print("STEP1")    yield "Willard"    print("--------")    print("STEP2")    yield 18    print("--------")    print("STEP3")    yield "Engineer"# 调用willardInfo()这个generator函数,先生成一个generator对象# 然后用next()函数不断获得下一个返回值,即可用循环直接打印willardInfoObject = willardInfo()for willard in willardInfoObject:    print(willard)

# 结果输出:
STEP1
Willard
--------
STEP2
18
--------
STEP3
Engineer

2.迭代器

# 可直接用于for循环的数据类型:# 1.list、tuple、dict、set、str等;# 2.generator,包括:生成器和带yield的generator function;# 3.可以直接作用于for循环的对象称为可迭代对象:Iterable;# 4.使用isinstance()判断一个对象是否为Iterable对象;from collections.abc import Iterableprint("判断list是否为可迭代对象!",isinstance([],Iterable))print("判断dict是否为可迭代对象!",isinstance({},Iterable))print("判断str是否为可迭代对象!",isinstance("Willard",Iterable))print("判断生成式是否为可迭代对象!",isinstance((num for num in range(10)),Iterable))print("判断number是否为可迭代对象!",isinstance(99,Iterable))

# 结果输出:
判断list是否为可迭代对象! True
判断dict是否为可迭代对象! True
判断str是否为可迭代对象! True
判断生成式是否为可迭代对象! True
判断number是否为可迭代对象! False

# 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator# 使用isinstance()判断一个对象是否为Iterator对象;from collections.abc import Iteratorprint("判断生成器是否为迭代器!",isinstance((num for num in range(10)),Iterator))print("判断list是否为迭代器!",isinstance([],Iterator))print("判断dict是否为迭代器!",isinstance({},Iterator))print("判断str是否为迭代器!",isinstance("Willard",Iterator))print("----------------------------------------------------------")# Tips:# 1.生成器都是Iterator对象,但list、dict、str是Iterable但不是Iterator;# 2.Iterator对象表示数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,# 直到没有数据时抛出StopIteration错误;这个数据流可以看作一个有序序列,# 但不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,# Iterator的计算是惰性的,只有在需要返回下一个数据时才计算;# 3.使用iter()函数把list、dict、str变成Iterator;print("使用iter()函数把list、dict、str变成Iterator.")print("判断list是否为迭代器!",isinstance(iter([]),Iterator))print("判断dict是否为迭代器!",isinstance(iter({}),Iterator))print("判断str是否为迭代器!",isinstance(iter("Willard"),Iterator))

# 结果输出:
判断生成器是否为迭代器! True
判断list是否为迭代器! False
判断dict是否为迭代器! False
判断str是否为迭代器! False
----------------------------------------------------------
使用iter()函数把list、dict、str变成Iterator.
判断list是否为迭代器! True
判断dict是否为迭代器! True
判断str是否为迭代器! True

到此,相信大家对"Python3的生成器和迭代器代码怎么写"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

迭代 生成 函数 对象 生成器 元素 数据 循环 不断 结果 语句 输出 代码 普通 个数 内容 序列 数据流 方法 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 朗新科技与工业互联网 致骋互联网科技 远拓互联网科技 米客互联网科技 居家互联网科技有限公司 互联网科技实习生岗位职责 常德市电业局互联网科技部 浙江互联网科技研学营 苏州五指互联网络科技有限 恒生互联网科技指数跳水 本届互联网博览会上的黑科技 互联网科技和法律行业 中和天地互联网科技有限公司 中科明德北京互联网科技 广州富喜互联网络科技 互联网科技包装股 昆明中奇联合互联网科技 第三届互联网大会安防黑科技 互联网科技快速发展优美句子 小牛互联网科技有限公司地址 顺玮阁互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 深圳前海聚择互联网科技有限公司 互联网科技热点资讯 科技与互联网哪个更好 苏州铭阳互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 半导体行业属于互联网高科技类吗 西安有哪些互联网高科技企业 杭州融税互联网科技有限公司
0