uniapp对象怎么获取值_第65p,关于:生成器、迭代器与迭代对象(上)
大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第65篇文章,第三阶段的课程:Python进阶知识:生成器、迭代器与迭代对象。
一、什么是可迭代对象?
迭代是一个重复的过程,迭代每次的重复都是基于上一次的结果;如果单纯的重复并不是迭代;
下面这张图片会用一个简单的案例说明迭代与循环的区别:
由于可迭代对象是一种比较抽象的概念,我们可以用这样的方式区分可迭代对象;在Python中只要内置有__iter__()方法的对象都称之为可迭代对象。
二、迭代器?
1、什么是迭代器?
器是工具,迭代器指的是迭代取值的工具。
2、为什么会有迭代器?
如果我们使用索引取值的方式获取对象内的元素,可以获取到对象内所有元素的值;但是,对于一些没有索引的对象,如字典,通过索引取值的方式是无法获取字典中元素的值;
为了解决基于索引取值的局限性,Python提出了一种迭代取值的方式,这就是迭代器(iterator);只要是可迭代对象,都能进行迭代取值;
调用可迭代对象下的__iter__方法,可以得到该迭代对象的迭代器对象,即:可迭代对象可以转换成迭代器对象。
将可迭代对象转成迭代器对象以后,迭代器对象内有一种__next__()方法,使用__next__()方法就可以进行迭代取值。每执行一次__next__()方法就能取得迭代器中的返回值;当迭代器的值被取完,再次取值会发出报错信息。
3、可迭代对象与迭代器的不同:
可迭代对象只能通过索引取值的方式(即:__iter__()方法);迭代器对象不仅可以通过索引取值,也可以通过__next__()方法取值;
4、用for循环的工作原理说明迭代器:
① 将被循环的数据调用__iter__()方法,将数据转换成为迭代器对象,如果数据本身是迭代器对象,调用__iter__()方法也是在调用迭代器本身,并没有发生任何变体;
② 基于迭代器对象,调用__next__()方法进行迭代取值,拿到__next__()的返回值;
③ 将返回值赋值给i
④ 循环往复以上步骤,迭代器对象只的值被取尽,抛出StopIteration异常,for循环会捕捉异常并结束循环。
所以while循环可以称为条件循环,for循环可以称为迭代器循环。
只要是迭代器对象都相当于执行了for循环;所以我们在进行数据类型转换的时候,如果字符串转换成列表x = list(str),这里调用了list方法其实就是调用了迭代器对象进行了for循环,所以会将字符串打散成一个个字符,变成列表(list)中的一个元素。
如:list(“杨数Tos”)与for的原理相同,得到的结果是:['杨', '数', 'T', 'o', 's']。
5、迭代器对象优缺点总结:
优点:
a. 获得了一种统一取值的方案,不管是有序类型还是无序类型都可以使用同一方法进行取值;
b. 更节省内存,数据只要被使用时,__next__()方法才会触发并生成新的数据,就像一只生蛋的鸡,不用事先把所有的蛋生出来,只有调用时,才会生出新的蛋;
缺点:
A. 不能索引取值这样,可以取指定的值,比如取第3个值,使用索引取值可以直接获取,使用迭代器必须先把前两个值取出来 ,才能获取到第3个值。
B. 迭代器具有生命周期,迭代器内的值取完以后,再次取值会发生报错。
C. 除非迭代器内的值被取尽,否则无法获取迭代器的长度。
D. 只能取下一个值,不能回到开始,
以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。
感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!
本文由杨数Tos原创,欢迎关注,带你一起长知识。
uniapp对象怎么获取值_第65p,关于:生成器、迭代器与迭代对象(上)相关推荐
- 怎么确定迭代器后面还有至少两个值_如何理解Python中的可迭代对象、迭代器和生成器
▍前言 在讨论可迭代对象.迭代器和生成器之前,先说明一下迭代器模式(iterator pattern),维基百科这么解释: 迭代器是一种最简单也最常见的设计模式.它可以让用户透过特定的接口巡访容器中的 ...
- python 生成器对象_Python 生成器, 迭代器, 可迭代对象的区别
1.可迭代对象 在python中, 一切皆对象, 但凡是可以用for循环进行遍历取值的对象都可以称之为可迭代对象, 可迭代对象在程序的一个执行周期中,可以无限轮次的进行循环遍历 2.迭代器 a.一个可 ...
- uniapp对象怎么获取值_原理 | 怎么获取PMSM电机转子位置Offset值
更多,更及时的干货内容,请加我们的微信公众号:wc_dj8 诚邀业内人士及机构向我们投稿,投稿有礼 投稿邮箱:tougao@51wctt.com 来源| 网络 问题: PMSM电机,如果电机铭牌上的o ...
- python 列表生成式_深度好文:Python之列表生成式、生成器、可迭代对象与迭代器(一)...
作者:云游道士 原文:https://www.cnblogs.com/yyds/p/6281453.html 本节内容 语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterab ...
- es6 获取对象的所有值_前端开发必备 - ES6 新特性之 Set和Map数据结构
往期回顾: 前端开发必备 - ES6 新特性之 let 和 const 命令 前端开发必备 - ES6 新特性之 变量的解构赋值 前端开发必备 - ES6 新特性之 字符串的拓展 前端开发必备 - E ...
- js map遍历 修改对象里面的值_求职季之你必须要懂的原生JS(上)
点击上方"IT平头哥联盟",选择"置顶或者星标" 一起进步- 互联网寒冬之际,各大公司都缩减了HC,甚至是采取了"裁员"措施,在这样的大环境 ...
- nsdictionary获取值_获得nsdictionary值
Object C学习笔记13-Dictionary字典 通过Array数组和Set集合的学习和理解,可以想象得到Dictionary也分为两种情况了,那就是可变和不可变两种类型的.的确如此,在Obje ...
- 每个python对象都具有布尔值_百度T7架构师透析Python对象你需要知道这些
1. Python对象 Python使用对象模型来存储数据.构造任何类型的值都是一个对象. 所有的Python对象都拥有三个特性:身份,类型和值. 身份: 每一个对象都有一个唯一的身份标识自己,任何对 ...
- python3迭代器和可迭代对象_一文读懂 Python3 可迭代对象、迭代器、生成器区别...
笔者学习Python已有一段时间,一直以为对于可迭代对象(iterable).迭代器(iterator).生成器(generator)有一定理解了,直到看到<流畅的python>中的讲解才 ...
最新文章
- java8 时间加一秒_年货买瓜子有讲究!这些加了“料”的瓜子不安全!
- 身限辞退风波,Google AI 掌门人 Jeff Dean 不误折桂 IEEE 冯诺依曼奖
- 工厂参观记:.NET Core 中 HttpClientFactory 如何解决 HttpClient 臭名昭著的问题
- Ms Sql Server 2005的数据库快照功能使用实践
- 【补充一则】身份证校验的c#代码
- python手写数字识别实验报告_机器学习python实战之手写数字识别
- 【luogu3834】【模板】可持久化线段树 2(主席树),静态区间第K小值
- 《linux核心应用命令速查》连载二:lastcomm:显示以前使用过的命令的信息
- python运维开发_python运维开发
- cad无法安装_装机必备!免安装CAD迷你看图特别版PC软件
- BT5 U盘制作方法
- 解除电脑宽带限制,提升电脑网速
- Android数据库更新并保留原来数据的实现
- 所以,网络工程师能从事什么工作?
- 【学习小结】树上的概率、期望问题,树上高斯消元
- 智能照明控制系统 在医院中的设计和应用
- [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
- JAVA-面向过程编程
- 齐博x1如何调用系统自定义字段
- 《我从起点开始奔跑》