理解python中的迭代
迭代
1. 什么是迭代?
使用for循环遍历取值的过程叫做迭代,比如:使用for循环遍历列表获取值的过程
for value in [1, 2, 3, 4]:print(value)
2. 可迭代对象
使用for循环遍历取值的对象叫做可迭代对象, 比如:列表、元组、字典、集合、range、字符串
3. 判断对象是否是可迭代对象
#元组,列表,字典,字符串,集合,range都是可迭代的对象
from collections import Iterable #Iterable可迭代对象
#判断对象是否是指定类型
result = isinstance((3, 5), Iterable)
print("元组是否是可迭代对象:", result)result = isinstance([3, 5], Iterable)
print("列表是否是可迭代对象:", result)result = isinstance({"name": "张三"}, Iterable)
print("字典是否是可迭代对象:", result)result = isinstance("hello", Iterable)
print("字符串是否是可迭代对象:", result)result = isinstance({3, 5}, Iterable)
print("集合是否是可迭代对象:", result)result = isinstance(range(5), Iterable)
print("range是否是可迭代对象:", result)result = isinstance(5, Iterable)
print("整数是否是可迭代对象:", result)#提示: 以后还根据对象判断是否是其它类型,比如以后可以判断函数里面的参数是否是自己想要的类型
result = isinstance(5, int)
print("整数是否是int类型对象:", result)class Student(object):passstu = Student()
result = isinstance(stu, Iterable)print("stu是否是可迭代对象:", result)result = isinstance(stu, Student)print("stu是否是Student类型的对象:", result)
4. 自定义可迭代对象
自定义可迭代对象: 在类里面定义__iter__ 方法创建的对象就是可迭代对象
自定义可迭代类型代码
#自定义一个类去判断当前的类是否可以被迭代
from collections import Iterable # 可迭代的对象#自定义可迭代对象: 在类里面定义__iter__方法创建的对象就是可迭代对象
class MyIter(object):def __iter__(self):# 可迭代对象的本质:遍历可迭代对象的时候其实获取的是可迭代对象的迭代器, 然后通过迭代器获取对象中的数据pass#得到一个对象
my_iter = MyIter()print(isinstance(my_iter, Iterable))
#这个类是一个可迭代的对象,但是他还不能被迭代,因为他没有返回迭代的数据
#如果你要使用for,那么你一定要是一个迭代器对象,迭代器前提是你是可迭代的对象,但是再加一个返回数据for temp in my_iter:print(temp)
执行结果:
True
Traceback (most recent call last):File "自定义可迭代对象.py", line 19, in <module>for temp in my_iter:
TypeError: iter() returned non-iterator of type 'NoneType'
[Finished in 0.2s]
通过执行结果可以看出来,遍历可迭代对象依次获取数据需要迭代器
小结
在类里面提供一个__iter__创建的对象是可迭代对象,可迭代对象是需要迭代器完成数据迭代的。
理解python中的迭代相关推荐
- 更深入理解 Python 中的迭代
(点击上方公众号,可快速关注) 编译: linux中国 / MjSeven 英文: Trey Hunner https://linux.cn/article-9681-1.html 深入探讨 P ...
- python迭代是什么意思_如何理解python中的迭代
迭代:是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代.例如: (1)非迭 ...
- python iterable对象_如何理解Python中的iterable对象
转载请注明出处:https://www.jianshu.com/u/5e6f798c903a [^*] 表示注脚,在文末可以查看对应连接,但简书不支持该语法. 首先,容器和 iterable 间没有必 ...
- 理解 Python 中的 for 循环
译者注: 本文翻译自 Trey Hunner 于 2019 年 6 月 18 日发表的文章 Loop Better: a deeper look at iteration in Python 文中括号 ...
- 理解Python中的yield
理解Python中的yield 参考文献 本文浅谈自己对Python中yield关键字的理解. yield可以理解成return,但是它与return又不完全相同.在Python中,yield关键字是 ...
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...
- python中元组_理解python中的元组
理解 python 中的元组 引言 在 Python 中元组是这样的: 元组是是这样一种数据结构:不变的或者不可改变的(简单来说不能重新赋值) .元素的有序序列.因为元组是 不变的,所以他的数值是不能 ...
- python中继承是什么意思_如何理解Python中的继承?python入门
如何理解Python中的继承?如今,python编程语言深受企业和个人的喜爱.python开发工程师是近年来互联网行业非常热门的职业岗位之一.学习python的人除了零基础的,还有一部分是在职运维.在 ...
- python装饰器作用-理解python中的装饰器
一 什么是装饰器? 正如其名,装饰器的作用是为已经存在的对象增加额外功能(装饰),由此可使已有函数在无需代码改动的情况下增加额外功能:装饰器的本质是嵌套的函数且返回函数对象,即闭包.有关闭包的概念,可 ...
最新文章
- 指定动态分区_重点解析!2021湖南中级职称评审动态趋势
- 智能车竞赛第十六届比赛参赛同学提问-环境参数-5月15
- 18岁双料竞赛金牌得主邓明扬:我只是数学初学者,求在MIT“活”下去
- C++中自定义比较函数和重载运算符总结
- python内置变量__complex___Python 内置方法
- OpenCV用代码解释单应性的基本概念
- java 输出数据类型_输入输出和java数据类型
- java中如何确定是数字_java中怎么判断指定的数据是字符串是否是数字?
- 浏览器中关于事件的那点事儿
- SAP CRM Fiori 标准应用 My Account - search by ID 根据 ID 进行搜索的标准功能实现原理
- qt 调用qpainter_在Qt5.4中如何实现QOpenGLWidget和QPainter混合编程
- android launcher 字体大小,Android6.0 Launcher3 修改app字体大小
- 【MySQL】MySQL常见的读写分离方法
- harbor 多端口_安装Harbor并修改默认使用的80端口
- C++ 泛型模板进阶
- Js和jQuery的文档就绪函数以及执行次数
- 把3000行代码重构成15行的牛逼操作!!!
- Java入门需要了解(面向对象之接口-十四)
- MADlib——基于SQL的数据挖掘解决方案(7)——数据转换之其它转换
- INFLUXDB-influxDB一些查询语法你必须知道
热门文章
- uniapp扫码功能兼容h5
- 浅谈Jmeter性能测试流程
- 高级程序员、研发Leader、技术总监、首席架构师、CTO的区别
- 【智慧农场V2.1.1】功能模块+亲测版+农场租地种植+畜牧领养+智慧农场商城+农场直播小程序+认养农业
- 冲压模具的费用最全计算公式及例子说明
- 毕业设计的问卷数据处理
- 微信分支付免押租借_小程序版本
- 花一万个小时练习 Coding,不要浪费一万小时无谓地 Debugging
- 16个掘金量化社区的热门话题,送给各位Quant的量化交易干货
- 武汉理工计算机与自动化专业哪个好,武汉理工大学电气工程及其自动化专业怎么样...