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

Python:可迭代对象,迭代器对象

可迭代对象(Iterable):

可迭代对象:str,list,tuple,dict,set等

可迭代对象的条件:

对象实现了__iter__()方法;__iter__()方法返回了迭代器对象

for循环工作原理:先通过__iter__()方法获取可迭代对象的迭代器;对获取到的迭代器不断调用__next__()方法来获取下一个值并将其赋值给临时变量i

isinstance():判断一个对象是否是可迭代对象或者是一个已知的数据类型

#导入模块
from collections.abc import Iterable
#st='123'
#isinstance(o,t)#o:对象 t:类型 可以是直接或者间接类名,基本类型或元组
print(isinstance(123,Iterable))#返回False

迭代器:
在上次停留位置继续去做一些事情

__iter__()方法:获取到可迭代对象的迭代器

__next__()方法:一个个去取元素,取完元素后会引发一个异常

#1.创建迭代器对象  迭代器Iterator
li=[1,2,3,4,5]
li2=iter(li)
print(li2)
#2.获取下一条数据
print(next(li2))#不断通过next()获取,五个数据取五次
#3.取完元素后再使用next()方法会引发StopIteration异常

步骤:1.iter()调用对象的__iter__(),并把__iter__()方法的返回结果作为自己的返回值

2.next()调用对象的__next__(),一个个取元素

3.取完元素后再使用__next__()会引发StopIteration异常

#1.创建迭代器对象  迭代器Iterator
li=[1,2,3,4,5]
#li2=iter(li)
li2=li.__iter__()
print(li2)
print(li2.__next__())
#2.获取下一条数据
#print(next(li2))#不断通过next()获取,五个数据取五次
#3.取完元素后再使用next()方法会引发Stop Iteration异常
print(dir(li))

输出属性结果:

['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']****有一些魔法方法


http://www.kler.cn/a/596960.html

相关文章:

  • 图解AUTOSAR_CP_DiagnosticLogAndTrace
  • OpenCV 基础模块 Python 版
  • Ae 效果详解:描边
  • UE4学习笔记 FPS游戏制作12 添加第二把枪,制作枪的父类,动态生成物体,切换武器
  • ccfcsp1901线性分类器
  • 【day1】数据结构刷题 链表
  • linux常用符号
  • pcap流量包分析
  • 【005安卓开发方案调研】之Flutter+Dart技术开发安卓
  • dockers数据卷挂载和文件挂载
  • 微信小程序的业务域名配置(通过ingress网关的注解)
  • [Vue]列表渲染
  • 手撕算法——二分
  • 【算法工程】大模型开发之windows环境的各种安装
  • 【EI/Scopus双检索】2025年3-4月六大机械、电气、材料、自动化领域国际会议开放投稿,硕博生速来!
  • STM32基本GPIO控制
  • Android开发技能 - Perfetto系列
  • 【计算机网络原理】选择题+简答题
  • 机器翻译(蓝桥云课)
  • 批量图片压缩工具,高效减小文件大小并保持质量