当前位置: 首页 > news >正文

Python3 学习(菜鸟)-06迭代器与生成器

迭代器 iterator

迭代器是一个可以记住遍历的位置的对象,迭代器对象从第一个元素开始访问 直到所有的元素被访问结束。迭代器只能往前不会后退。

iter() 函数

iter() 函数 可以将一个可迭代对象的迭代器取出

Ps: 可迭代对象必须具有迭代器,否则就不具有迭代的能力

next() 函数

next() 函数多次提取迭代器中的数据

lst = [1, 2, 3]iterator = iter(lst)print(next(iterator))	#对迭代器进行一次迭代操作
print(next(iterator))	#对迭代器进行一次迭代操作
print(next(iterator))	#对迭代器进行一次迭代操作#输出结果:
"""
1
2
3
"""

生成器 genrator

创建生成器

1.元组推导式

gen_2 = (i * 2 for i in range(5))  # 创建一个生成器表达式
print(gen_2) # <generator object <genexpr> at 0x0000027D27CCD850>

2.yield关键字

如果函数中有 yield 关键字那么这个函数就是生成器

当调用这个函数时,它并不会立即执行函数体,而是返回一个生成器对象。每当对生成器对象进行迭代时,函数会在每个 yield 语句处暂停,并返回一个值,然后在下一次迭代时从上次离开的地方继续执行。

def gen_func():for x in range(5):yield x
f=gen_func()
print(f) #<generator object gen_func at 0x0000019A1355D7E0>
print(next(f))# 0
print(next(f))# 1

访问生成器

next()

def fun():a = 1print('1')while True:print('2')a += 1print('3')yield aprint('4')# 1. 创建一个生成器对象
f = fun()
print(type(f))  # <class 'generator'># 2. 执行next()方法,会从函数的最上边向下执行,如果碰到yield,会把yield生成的值当作next()函数的返回值
print('\n**********************************')
print('next()函数的返回值:', next(f))  # 2# 3. 执行next()方法,会从yield向下继续执行,然后进入while循环,直到碰到碰到下一个yield,会把yield生成的值当作next()函数的返回值
print('\n**********************************')
print('next()函数的返回值:', next(f))  # 3# 4. 执行next()方法,会从yield向下继续执行,然后进入while循环,直到碰到碰到下一个yield,会把yield生成的值当作next()函数的返回值
print('\n**********************************')
print('next()函数的返回值:', next(f))  # 4

斐波那契数列

1 1 2 3 5 8 ...

本文参考:python生成器_关键迭代-CSDN博客

http://www.dtcms.com/a/265127.html

相关文章:

  • 碰一碰矩阵发布源码开发技术揭秘-支持OEM贴牌搭建
  • 在幸狐RV1106板子上用gcc14.2本地编译安装apache2.4.63,开启http2和tls1.3,并且https支持XP系统的IE6-8浏览器
  • 《汇编语言:基于X86处理器》第6章 条件处理(2)
  • 为什么我画的频谱图和audacity、audition不一样?
  • containerd 项目主要目录简要说明
  • Flink-1.19.0源码详解-番外补充3-StreamGraph图
  • 精准定义 RediSearch 索引 Schema
  • LeetCode Hot 100 哈希【Java和Golang解法】
  • 无人机状态识别研究梳理2025.7.2
  • 欧拉角、四元数和旋转矩阵的变换关系以及无人机的坐标变换
  • 在服务器中下载 HuggingFace 模型:终极指南
  • Java的SpringAI+Deepseek大模型实战-会话记忆【三】
  • 深度学习入门day4--手写数字识别初探
  • Cloudflare大动作
  • 大语言模型:是逐字生成还是一次多词?
  • Ubuntu22.04搭建基于GPU的Yolov8环境
  • 昇腾NPU节点软件版本检查与升级方法
  • iOS 集成RN Installing glog (0.3.5)报错的解决方案
  • 深度解析Linux内核IPv4设备管理:net/ipv4/devinet.c
  • 单片机学习笔记.10.串口UART
  • Excel 如何让某些符合特定条件的数据自动变色,以作警示?
  • SSL/TLS协议信息泄露漏洞(CVE-2016-2183)、SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)修复方法
  • Tomcat10.0以上版本编译成功但报错HTTP状态 404
  • MVI+Compose架构实战
  • 解释LLM怎么预测下一个词语的
  • Go语言动态数据访问实战
  • windows安装maven环境
  • vscode vim配置
  • ElementUI el-select多选下拉框,回显数据后无法重新选择和修改
  • vue中的torefs