python基础十一之迭代器和生成器

  可迭代

  内置方法中含有__iter__的数据类型都是可迭代的,只要是可迭代的就可以使用for循环,反之亦然。

print(dir(''))   # dir()函数可以获取当前数据类型的所有内置方法  返回值是list
print('__iter__' in dir([]))  # 判断是否含有__iter__内置方法

 

  迭代器

  内置方法中含有__iter__和__next__的都是迭代器,所以迭代器一定是可迭代的

# 一个可迭代的对象调用__iter__()之后会返回一个迭代器
print(type([].__iter__()))   # <class 'list_iterator'>

  迭代器可以使用__next__()方法一个一个去获取值

li = [1, 2, 3, 4, 5]
iterator = li.__iter__()
print(iterator.__next__())  # 1
print(iterator.__next__())  # 2
print(iterator.__next__())  # 3

 

  迭代器的好处:

    从容器内一一取值,可以取出全部内容

    节省内存空间:每次取值时才在内存中生成一个值

 

  迭代器和可迭代判断方法

from collections import Iterator
from collections import Iterable
print(isinstance([], Iterator))  # Iterator 迭代器
print(isinstance([], Iterable))  # Iterable 可迭代

 

 

  生成器

  生成器是含有yield关键字的迭代器。

# 定义
"""def generator():函数体yield 返回值
"""

  调用生成器后返回的是一个生成器。

def generator():print('生成器')yield 'zxc'return 'a'
# 生成器中yield和return能同时存在,return在yield后面定义没有任何意义,
# return在yield前面定义将无法执行yield,也就不在是生成器了
ret = generator()
print(type(ret))  # <class 'generator'>

 

转载于:https://www.cnblogs.com/zxc-Weblog/p/8179123.html

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

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

相关文章

架构设计器_大厂案例:马蜂窝大交通业务监控报警系统架构设计与实现

部门的业务线越来越多&#xff0c;任何一个线上运行的应用&#xff0c;都可能因为各种各样的原因出现问题&#xff1a;比如业务层面&#xff0c;订单量比上周减少了&#xff0c;流量突然下降了&#xff1b;技术层面的问题&#xff0c;系统出现 ERROR &#xff0c;接口响应变慢了…

使用mpvue开发小程序

一、安装node.js 1、在官网中安装nodejs最新版本。地址&#xff1a;https://nodejs.org/en/download/&#xff0c;根据自己环境&#xff0c;进行下载安装。 2、安装完成后&#xff0c;进行nodejs版本及npm版本查看。 打开cmd命令行&#xff0c;输入 node -v 和 npm -v&#…

iOS----------UITextField实现过滤选中状态拼音

2018年上班的第二天&#xff0c;就这样背了一个大锅。我们项目中有一个搜索功能&#xff0c;在这一期的版本中&#xff0c;为了增强优化&#xff0c;去除了过滤空格的请求&#xff0c;这样或许能增加很好的用户体验&#xff0c;恰恰相反&#xff0c;偷鸡不成蚀把米。没想到苹果…

ai电磁组属于什么组_RPA+AI 创新案例挑战赛 2020 【专业组】amp;【校园组】优胜名单来也!...

大赛介绍本次大赛由 RPA 产业推进方阵为指导单位&#xff0c;来也科技为主办单位&#xff0c;面向所有来也科技合作伙伴及深圳地区大学生公开报名征集【专业组】&【校园组】参赛案例。RPA 产业推进方阵是在中国人工智能产业发展联盟指导下&#xff0c;由中国信息通信研究院…

GetSystemInfo()

关于“GetSystemInfo()”的详细信息&#xff0c;参考&#xff1a;https://msdn.microsoft.com/en-us/library/windows/desktop/ms724381(vvs.85).aspx Getting Hardware Information 例程&#xff1a;https://msdn.microsoft.com/en-us/library/windows/desktop/ms724423(vvs.8…

具有Spring Boot和Yeoman的单页Angularjs应用程序

我非常感谢yeoman之类的工具&#xff0c;它们提供了一种非常快速的方法来将不同的javascript库组合在一起成为一个一致的应用程序。 Yeoman提供了UI层&#xff0c;如果您需要开发服务层和静态资产的Web层&#xff0c;则打包的一种好方法是使用Spring Boot 。 我知道有像JHipste…

vue项目封装axios请求

目录&#xff1a; 一&#xff0c;src/utils/request.js import axios from axios import { getToken } from /utils/auth import store from /storeconst service axios.create({baseURL: process.env.VUE_APP_BASE_API,withCredentials: true,timeout: 5000,// headers:{ …

自定义函数_python3基础07函数(自定义)

"pythonic生物人"的第43篇分享。详细介绍python中&#xff1a;自定义函数的构建&#xff1b;参数传递&#xff1b;模块中调用函数。目录0、楔子1、自定义函数格式2、编写函数说明文档3、函数参数函数形参和实参区别位置实参关键字实参默认实参让实参可选传递任意数量…

v-for中用elementUI实现分页

html 分页的内容 <el-aside style"width:49%;" v-for"(item, key, index) in AirInfor.slice((currentPage-1) * pagesize, currentPage * pagesize)" :key"index"><p style"margin-bottom: 10px;"><span>区域&a…

curl -windows下接口通讯

1&#xff0c;下载curl -----url命令传输工具2&#xff0c;配置curl环境变量3&#xff0c;在cmd环境中使用举例&#xff1a;curl -G http://xxxxxxx.com&#xff1f;参数使用&#xff1a;curl -G "www.baidu.com" 最原始的批量通讯返回可以将通讯命令保存为bat格式文…

centos7建站php_centos7搭建php服务器

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服务器 ECS(Elastic Compute Service)是一…

vue项目实现登录(sessionStorage 存储 token)

前提参考&#xff1a;vue项目封装axios 思路&#xff1a; // 1, 前端校验&#xff0c;校验成功后向后台传用户名和密码&#xff08;每次请求接口都要传 token&#xff09; // 2&#xff0c; 后端收到请求&#xff0c;验证用户名和密码&#xff0c;验证成功&#xff0c;生成 to…

sqlserver 存储过程 C#调用 实现从数据库Get数据

在最近的项目中我想建立一个EFDBfirst的模型但是失败了&#xff0c;生成的edmx中没有实体类和表结构&#xff0c;到处需求解决方案&#xff0c;未果。 问题请见&#xff1a;https://q.cnblogs.com/q/102743/ 后来使用本文写的这个方法 /// 1.在sqlserver中建立存储过程 在一个d…

TIBCO BusinessWorks 6和Container Edition与BW5的比较

[本文已于一段时间前发布在TIBCO博客上 。 我还在适当的地方添加了有关BusinessWorks Container Edition&#xff08;BW CE&#xff09;的一些信息。 下面定义的大多数特性对于BW6和BW CE均适用。 TIBCO ActiveMatrix BusinessWorks 6&#xff08;BW6&#xff09;是一个现代化…

修改jwt过期时间_PostgreSQL如何修改用户过期时间

生产环境中&#xff0c;有时候需要设置一个有时效的临时帐户&#xff0c;供一段时间内&#xff0c;某些需要的使用&#xff0c;过期帐号自己禁用&#xff0c;但有时候因为更多的需求&#xff0c;需要对这种有过期时间的帐号进行延长过期时间&#xff0c;这时候就需要使用命令行…

vue使用echarts图表

https://www.jianshu.com/p/2894b781063b 1、安装 npm install echarts // npm install echarts --save2、引入 echarts import * as echarts from echarts;3、写一个div容器用来承载图表: <div id"teamLeader"></div>4、写一个方法&#xff0c;&am…

云计算入门

根据美国国家标准与技术研究院定义&#xff1a;云计算是一种按使用量付费的模式&#xff0c;这种模式提供可用的、便捷的、按需的网络访问&#xff0c; 进入可配置的计算资源共享池&#xff08;资源包括网络&#xff0c;服务器&#xff0c;存储&#xff0c;应用软件&#xff0c…

20180105随笔

过滤器的执行过程&#xff1a;// 目标资源执行前执行chain.doFilter(request, response);// 目标资源执行后执行文件上传的前提&#xff1a;1.表单的method方法必须是post2.表单的enctype类型必须是&#xff1a;multipart/form-data3.表单中input的上传输入域为&#xff1a;<…

怎么自定义字体_自定义字体@fontface的常见应用

前言font-face允许网页自带字体&#xff0c;从而消除对用户电脑字体的依赖。基本用法如下&#xff1a;font-face { font-family: "family-name"; /* 字体名 */ src: url("family-name.eot"); /* IE9 */ src: url("family-name.eot?#iefix&q…

vue项目中使用mock(一)

一&#xff0c;安装 npm install mockjs --save-dev npm install json5 --save-dev npm install axios --save 二&#xff0c;每个文件内容 目录&#xff1a; 流程&#xff1a; Home.vue执行getUserInforList() 调用main.js中全局变量$api 调用/utils/api下的getUserInfo…