迭代器和生成器

迭代器和生成器

  • 一、迭代器
    • ① iter()
    • ② next()
    • ③ 自定义迭代器
  • 二、生成器
    • ① 创建生成器
      • 1、斐波那契数列
      • 2、yield 创建
    • ② 使用send()

一、迭代器

迭代器是一个可以记住遍历的位置的对象,迭代器从第一个元素开始访问,直到所有元素访问结束

① iter()

通过iter()得到可迭代对象(a)中的迭代器
在这里插入图片描述

② next()

通过iter()得到的迭代器(iter_a),使用next()取数据
在这里插入图片描述

③ 自定义迭代器

由于a = [1,2,33,4,5,6,77,8] 已经是个列表,列表里面本身已经存在迭代器

而自己定义的class类对象里,里面没有迭代器,因此需要__iter__ 与 __next__,当我们使用 iter()与next()时会自动调用该类的__iter__ 与 __next__

二、生成器

generator
例如受内存限制,生成1000w个list需要大量内存,如果能通过某种算法进行推算出列表的元素,当这个元素/数据需要用的时候才被生成出来,这样就可以不一次性创建大list,从而减少内存使用
即,生成器是 指记录数据生成的方法,而不是事先生成并存储完整的数据

例子:
在这里插入图片描述
list1是列表,而list2是生成器
此时 将list1改为range(100000000000000000) 后,程序会崩溃并返回137内存溢出状态码,而同样对list2操作时并不会内存溢出,且还可以对list2进行for循环打印(从而实现,当数据被需要时,才生成,以此规避内存溢出)

① 创建生成器

1、斐波那契数列

import time
class Fibonacci():def __init__(self):self.a = 1self.b = 1def __iter__(self):return selfdef __next__(self):next_num = self.aself.a , self.b = self.b , self.a+self.breturn self.afib = Fibonacci()for f in fib:print(f)time.sleep(2)

在这里插入图片描述

2、yield 创建

def fibonacci():a = 1b = 1while 1:next_num = aa , b  = b , a+byield next_numfin = fibonacci()
print(fin)
print(type(fin))

在这里插入图片描述
如果一个函数中有yield,此时fin = fibonacci()就变成了创建一个生成器对象,正常调next()即可生成数据
在这里插入图片描述

② 使用send()

在这里插入图片描述
可以通过send传入
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458313.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NX/UG二次开发—其他—矩形套料(排料)简介

算法逻辑 排料方法一定时间内获取近似解的算法 看了一些论文和博客,一般排料方法采用最低水平线算法排料,再此基础上增加空余区域填充。 然后配合遗传学算法||模拟退火算法||蚁群算法||免疫算法等,在一定时间内求得一组最优解。 在最简单的…

挑战杯 python+大数据校园卡数据分析

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于yolov5的深度学习车牌识别系统实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:3分 该项目较为新颖&am…

java日志框架总结(五、logback日志框架)

一、logback概述 Logback是由log4j创始人设计的又一个开源日志组件。 Logback当前分成三个模块: 1、logback-core, 2、logback- classic 3、logback-access。 1)logback-core是其它两个模块的基础模块。 2)logback-…

云服在手,轻松过年!告别沉重电脑包,随时随地工作无忧

临近春节,不少人都要准备回老家了 但回了老家,就不能像回自己家一样,资料文件都在自己电脑,处理事务能随时随地,毕竟舟车劳顿,总不能身上带着台式机/手提电脑来回折腾。 那么如何既能轻装回家&#xff0c…

“掌握温度,感知湿度,一触即知!”DHT11温湿度传感器,为您的生活增添一份关怀与精准。#非标协议【下】

“掌握温度,感知湿度,一触即知!”DHT11温湿度传感器,为您的生活增添一份关怀与精准。#非标协议【下】 前言预备知识1.DHT11温湿度传感器初识1.1产品概述1.2与51单片机接线1.3数据传送逻辑和数据格式 2.发送时序检测DHT11温湿度传感…

【01】判断素数/质数(C语言)

目录 (1)素数特点:只能被1和本身整除 (2)代码如下: (3)运行结果如下 ​编辑 (4)函数引申 (1)素数特点:只能被1和本身…

leetcode 1.两数之和(C++详细题解)DAY1

文章目录 1.题目描述示例提示 2.解答思路(1)暴力解法(2)哈希表 3.实现代码结果 4.总结 1.题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c…

Mysql MGR搭建

一、架构说明 1.1 架构概述 MGR(单主)VIP架构是一种分布式数据库架构,其中数据库系统采用单主复制模式, 同时引入虚拟IP(VIP)来提高可用性和可扩展性。 这种架构结合了传统主从复制和虚拟IP技术的优势,为数据库系统提供了高可用、 高性能和…

游戏服务器多少钱一台?腾讯云32元,阿里云26元

游戏服务器租用多少钱一年?1个月游戏服务器费用多少?阿里云游戏服务器26元1个月、腾讯云游戏服务器32元,游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选,可以选择轻量应用服务器和云服务器,阿腾云atengyu…

OpenCV与机器学习:使用opencv和sklearn实现线性回归

前言 线性回归是一种统计分析方法,用于确定两种或两种以上变量之间相互依赖的定量关系。在统计学中,线性回归利用线性回归方程(最小二乘函数)对一个或多个自变量(特征值)和因变量(目标值&#…

手把手教你开发Python桌面应用-PyQt6图书管理系统-图书类别信息修改实现

锋哥原创的PyQt6图书管理系统视频教程: PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频&…

怎么加密电脑磁盘?磁盘加密软件哪个好?

磁盘是电脑储存数据的基础工具,可以存放大量数据。为了避免数据泄露,可以使用专业的磁盘加密软件加密保护电脑磁盘。那么,磁盘加密软件哪个好呢?下面我们就来了解一下。 磁盘加锁专家 磁盘加锁专家是一款专业的磁盘加锁软件&…