动态方式生成列表

这样的方式生成列表会有一个特点:就是列表中的元素都是一下子生成的,因为这里之生成10个元素,因为元素数量比较少,所以体会不到,当我们这样的话:[i for i in range(10000)],这个程序为了形成列表会循环10000次,然后生成列表,这个速度会很慢,而且我们可能有时只需要列表中的前10个数据,而10之后的用不到,这就造成了资源内存的浪费,为了解决这个问题,我们可以使用python生成器。

生成器

要想将[i for i in range(10000)]变成生成器会非常的简单,只需要将[]改成()即可,这就是生成器,比如

现在list里面没有任何元素,只有我们使用list的时候才会有生成元素,元素使用到哪里,迭代器就生成到哪里的元素,而且使用的时候必须只能从索引为0开始使用,也就是从第一位开始逐渐往后生成,不可以直接调到其它位置使用,比如:

而且生成器的索引只能往后走,不能倒退

该程序生成了一个生成器,其中第一个循环对其进行遍历,因为是初次遍历,所以肯定是从索引0开始的,第二次进行遍历,因为生成器的光标只能往下走,所以第二次的遍历并不是从头开始遍历,而是继续当前光标进行遍历,接下来输出next也是接着当前的坐标进行遍历。

yield

我们可以在方法中使用yield,从而将方法变成一个生成器函数,当生成器函数内部调用yield,生成器函数的状态会被冻结,所有的变量的值会被保留下来,下一行要执行的代码的位置也会被记录,直到再次调用next()。一旦next()再次被调用,生成器函数会从它上次离开的地方开始。如果永远不调用next(),yield就一直记录原来的文字。

程序

结果

每调用一次fun()就会生成一个动态列表,所以list和list1不是同一个动态列表,这个动态列表的全部内容是["huan","feng","de","bian","cheng","ri","ji"]这个不是一次生成的,而是每调用一次动态列表,迭代器会往下执行,直到执行到yield,此时程序停止,然后生成一个列表元素,我们就可以获取到了。

在生成器函数中,return的作用就是返回异常,当执行到return的时候,会把它当作异常返回给调用者

我们可以对其进行异常处理

yield的两个功能

功能一:第一返回参数(next)

功能二:第二是执行接收参数(send)

会有以下几种情况:

一:执行功能一,然后执行功能二,不断交替执行

二:执行功能一,然后继续执行功能一,也就是不断next,这样功能二就被跳过了

三:执行功能二,也就是跳过功能一,但有一点需要注意,就是第一个yield不可以跳过功能1

举例一,全部执行功能1

过程分析:第一个next会执行返回数据获取到11,输出11(因为没有send方法,所以接收数据环节全部省略)

五分钟学会python编程_每天五分钟python编程:生成器技术是python语言最强大的技术之一...相关推荐

  1. python 学习_第五模块 DMO

    python 学习_第五模块 DMO 1. 节点 <!DOCTYPE html> <html lang="en"> <head><meta ...

  2. 不会数学可以学python吗_数学和英语都很差,学习Python难吗?看完我相信你会坚定你的选择...

    前言 首先!我想说:python 不需要很高的数学水平,英语也是很初级就可以入门,因为它的语法很简单,若你的英语不是很好,可以看很多中文的书,比如python基础教程,廖雪峰的python教程,或者看 ...

  3. 转行学python后悔_月薪13k的我为什么要转行学Python?

    在职业规划包括人生方向上,选择很重要. 一句很经典的话做总结"方向不对,努力白费". 选择自己感兴趣的工作,全力以赴投入其中,"唯有爱的深,才能做的好" 当你付 ...

  4. 一分钟学会看k线图_1分钟学会看K线请笑纳70种经典K线组合形态,绝对干货,轻松低买高卖!...

    (本文由公众号越声攻略(yslc688)整理,仅供参考,不构成操作建议.如自行操作,注意仓位控制和风险自负.) K线是最真实的盘面语言,不同的形态有不同的含义,是广大操盘手必备的交易决策工具,也是广大 ...

  5. 如何在mac终端运行python程序_如何在mac上的终端上运行python?

    First, the lesson said to simply type, python, into terminal to start coding in python (I don't know ...

  6. java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

  7. excel python插件_再见 VBA!神器工具统一 Excel 和 Python

    大家好,我是东哥. 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Notebok都是我每天必用的工具,而且两 ...

  8. 高中生编程_高中生是否必须参加编程课程?

    高中生编程 孩子应该具备技术素养吗? 当然! 通过使他们成为程序员来教会他们这种技能的最好方法是吗? 好吧,这是一个更棘手的问题. 首先,直言不讳,在世界许多地方,即使在富裕地区,学校也没有能力处理这 ...

  9. python速度_只需一行代码,让你的Python运算速度更加流畅!

    python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差. "一行代码让python的运行速度提高100倍" ...

最新文章

  1. 开源天气预报api整理
  2. Python 封装MySQL类
  3. SQLServer访问Oracle查询性能问题解决
  4. Python的pip下载特定版本TensorFlow方法
  5. 工具的使用——谷歌浏览器(chrome) (二)
  6. R 语言与简单的回归分析
  7. 判断是否是合法的IP地址
  8. springboot - 应用实践(N)使用springboot内置的@Scheduled
  9. ArcGIS教程:按单个值进行重分类
  10. java面试之多线程篇
  11. VP9编码(4)-- 约定
  12. 微信电脑pc端显示不了头像和加载不了表情包,怎么解决该问题
  13. Android 编译系统之Android.bp
  14. 时间序列的预处理——平稳性检验的R语言实现(二)
  15. 第28届奥运会奖牌榜
  16. 练习一万小时成天才?
  17. BZOJ 4408: [Fjoi 2016]神秘数(可持久化线段树)
  18. 简单介绍一下什么是vue
  19. python 互质数_程序要计算最少数量的操作以使数字在Python中不是互质数?
  20. 安卓程序开发作业(一、2017/2/23)

热门文章

  1. jQuery源码解析之on事件绑定
  2. Entity Framework 实体框架的形成之旅--实体框架的开发的几个经验总结
  3. CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率
  4. 关于android的日志输出LogCat
  5. 看云计算时代的web1800远程服务支持系统
  6. 一步一步教你使用Jmail实现邮件的接收与发送
  7. mybatis和spring jdbc持久层框架事务支持分析
  8. Java 操作MySql Blob 字段
  9. Sublime Text 插件-全栈开发收集
  10. php利用ftp上传视频,PHP用FTP类上传文件视频等的简单实现方法