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

天津网站优化公司哪家专业建站精灵网站模板

天津网站优化公司哪家专业,建站精灵网站模板,php网站开发中如何,垂直型电商网站如何做一、可迭代对象 1、 什么是可迭代对象#xff1f; 表示可以逐一迭代或者遍历的对象#xff0c;序列#xff1a;列表、元组、集合、字符串。非序列#xff1a;字典、文件。自定义对象#xff1a;实现了__iter__()方法的对象#xff1b;实现了使用整数索引的 getitem()方…一、可迭代对象 1、 什么是可迭代对象 表示可以逐一迭代或者遍历的对象序列列表、元组、集合、字符串。非序列字典、文件。自定义对象实现了__iter__()方法的对象实现了使用整数索引的 getitem()方法的对象这些都是可迭代对象。 iter() 用于定义该类的实例是可迭代对象并且应该返回一个迭代器。当自定义类需要支持迭代时就需要在类中定义 iter() 方法。 getitem()用于实现通过 obj[key] 来访问对象的方法并且支持整数索引和切片。 2、 怎么判断对象是不是可迭代对象 通常情况下可以 isinstance(mobject, Iterable)判断实现了 iter()方法的可迭代对象但是实现了__getitem__()方法的可迭代对象不能使用isinstance 判断。这种的怎么判断呢 官方文档描述 https://docs.python.org/zh-cn/3.7/library/collections.abc.html#collections.abc.Iterable from collections.abc import Iterableclass myiter:passmi myiter() res isinstance(mi, Iterable) # False 不是可迭代对象 print(res)class myiterable:data [0, 1, 2, 3]def __iter__(self):return self.datami myiterable() res isinstance(mi, Iterable) # True 是可迭代对象 print(res)class mysequence:data [0, 1, 2, 3]def __getitem__(self, index):# 使用整数进行索引return self.data[index]ms mysequence()print(ms[3]) # 调用__getitem__方法并且传递整数参数3res isinstance(ms, Iterable) # False 是可迭代对象 但是不能这样判断 print(res) res iter(ms) # 不报错就说明是可迭代对象, iter()接受一个可迭代对象 print(res) 3、 扩展知识 **iter()**函数是 Python 的内置函数接受一个可迭代的对象作为参数然后返回该可迭代对象的迭代器。可迭代对象被可用于 for 循环循环期间 for 语句会调用 iter()函数将可迭代对象转换成迭代器只执行一次将结果保存在临时变量中然后进行遍历。官方文档描述https://docs.python.org/zh-cn/3.7/reference/compound_stmts.html#for工程中的可迭代对象 # 工程中的可迭代对象 # requests/models/Response 就是一个可迭代对象 # requests 的响应都是通过Response封装的class Response(object):def __iter__(self):Allows you to use a response as an iterator.return self.iter_content(128)import requestsresponse requests.get(https://www.baidu.com) res isinstance(response, Iterable) print(res) # True 可以将可迭代对象当参数的函数 # 将可迭代对象当参数的函数 data [1, 2, 3, 4, 3] iter(data) map(int, data) filter(lambda x: x 0, data) all(data) any(data) list(data) tuple(data) max(data) min(data)二、迭代器 1、迭代器协议 如果要实现一个迭代器则必须遵循迭代器协议即要支持两个方法 iterator.iter() 返回迭代器本身 iterator.next() 要么返回迭代的下一项要么触发StopIteration异常 2、什么是迭代器 迭代器是一个可以记住遍历位置的对象从第一个元素开始访问直到所有元素访问结束。 迭代器即实现了__next__()方法又实现__iter__()方法。 3、如何判断一个对象是不是迭代器 使用 isinstance(mobject, Iterator)来判断 from collections.abc import Iteratorclass myiterator:passmi myiterator() res isinstance(mi, Iterator) # False 不是迭代器 print(res)class myiterator:data [0, 1, 2, 3]def __iter__(self):return iter(self.data)mi myiterator() res isinstance(mi, Iterator) # False 不是迭代器 print(res)class myiterator:data [0, 1, 2, 3]index 0def __iter__(self):# 该方法 必须返回一个迭代器# self本身实现了__iter__和__next__ 就是一个迭代器return selfdef __next__(self):if self.index len(self.data):next_item self.data[self.index]self.index 1return next_itemelse:raise StopIterationmi myiterator() res isinstance(mi, Iterator) # True 是迭代器 print(res)iter(mi)res next(mi) # 获取迭代器下一个元素 print(res)4、 扩展知识 **next()**函数是 Python 的内置函数接受一个迭代器作为参数用于从可迭代对象或迭代器中获取下一个元素如果没有更多的元素可供迭代next() 函数会引发 StopIteration 异常或者可以指定一个默认值作为参数以在迭代结束时返回。**next() **是迭代器对象的特殊方法用于定义迭代器的行为。负责返回该迭代器对象的下一个元素。如果没有更多的元素可供迭代它应该引发 StopIteration 异常。next(x)会调用x.next()方法。工程中的迭代器 import ioobj io.StringIO(hello world!) res isinstance(obj, Iterator) print(res)哪些函数会返回迭代器 data [1, 2, 3, 4] row [5, 6, 7, 8] # 哪些函数返回迭代器print(isinstance(iter(data), Iterator)) print(isinstance(map(int, data), Iterator)) print(isinstance(filter(lambda x: x 2, data), Iterator)) print(isinstance(zip(row, data), Iterator)) print(isinstance(enumerate(data), Iterator))def iter_with_yield(x):yield xx - 1print(isinstance(iter_with_yield(4), Iterator))5、可迭代对象与迭代器的区别 可迭代对象比如列表每次遍历都是从头开始迭代器遍历后会指向下一个位置可迭代对象可以通过iter()函数包装成迭代器。 from collections import Iterable, Iterator x [1, 2, 3] y iter(x) # iter将列表x转换成生成器 hasattr(x, __next__) # False 可迭代对象无__next__()方法 hasattr(y, __next__) # True 迭代器有__next__()方法可以使用next函数进行迭代 next(x) # 调用时会报错 TypeError: list object is not an iterator next(y) # 迭代器可以使用next进行迭代获取下一个 isinstance(x, Iterable) # True 判断是否可迭代对象 isinstance(x, Iterator) # False 判断是否迭代器 isinstance(y, Iterable) # True 判断是否可迭代对象 isinstance(y, Iterator) # True 判断是否迭代器
http://www.yayakq.cn/news/4570/

相关文章:

  • 写作网站投稿平台网页设计资料的网站
  • 山西龙采网站建设合同网站换域名
  • 云安区学校网站建设统计表大连开发区社保网站
  • 网站长期建设运营计划书做门户网站建设多少钱
  • 公司的网站备案手续只用网站开发VS就安装那些就够了
  • 图片滤镜网站开发做网站的详细流程
  • 南山模板网站建设公司wordpress点击下载
  • 制作企业网站平坝网站建设
  • 网站流量怎么做乡1万做一个手机app大概需要多少钱
  • 泉州住房和城乡建设网站策划与设计一个电子商务网站
  • 珠海做网站找哪家公司个人网站建设目标
  • 做网站用的字体是什么所有浏览器大全图片
  • dw做网站需要数据库么免费咨询服务协议
  • 医疗器械外贸网站建设网站前台功能介绍
  • 做包装盒效果图的网站做外贸网站流程
  • 培训网站建设方案模板微商城网站建设怎么样
  • 做网站企业logo 图标 设计
  • 北京企业网站seo平台网络服务器搭建配置与管理 下载
  • 网站建设有哪些软件有哪些wordpress怎么pjax
  • 网站提示404error近期的重大新闻
  • 企业网站备案材料网站主办者是谁
  • 网站建设技术方面论文天津建设工程信息网 招标发布软件
  • 如何做旅游网站的思维导图基于多站点的网站内容管理平台的管理与应用
  • 网站搭建多少钱logo修改wordpress如何添加备案号代码
  • 无锡企业建站模板做网站天通苑
  • 设计网站推荐 猪抖音代运营赚钱吗
  • wap网站建设设计农业网站建设费用预算
  • 建个官方网站要多少钱电商类网站
  • 思明区建设局官网站邢台网站建设公司哪家好一点
  • 万州哪里有做网站的网站建设两个方面