[python学习篇][廖雪峰][1]高级特性--创建生成器 方法1 a = (x for x in range(1,3))

创建一个生成器的方法:

for x in range(1,10000000) ,先生成一个列表[1........9999999] 如果我们只想要后面的几个元素,会发现浪费很多空间。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x104feab40>

如何获取generator的元素,可以通过next(),就计算出下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。

>>> a = (x for x in range(1,4))
>>> print type(a)
<type ‘generator‘>
>>> a.next()
1
>>> a.next()
2
>>> a.next()
3
>>> a.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>

另外一种方法是: for循环

>>> a = (x for x in range(1,4))
>>> for x in a:print x
...
1
2
3
>>>
时间: 2024-08-08 09:41:27

[python学习篇][廖雪峰][1]高级特性--创建生成器 方法1 a = (x for x in range(1,3))的相关文章

Python学习笔记(二)——高级特性

知识点 切片 切片 取一个list或tuple的部分元素. 原理:调用__getitem__,__setitem__,__delitem__和slice函数. 根据官方的帮助文档(https://docs.python.org/2/library/operator.html)可知,_getitem_返回元素的下标,_setitem_设置元素的值,_remove_删除元素的值. 而slice函数实现最重要的切片功能.            x=a[1:5] --> x._getitem_(slic

Python学习之路day4-函数高级特性、装饰器

一.预备知识 学习装饰器需理解以下预备知识: 函数即变量 函数本质上也是一种变量,函数名即变量名,函数体就变量对应的值:函数体可以作为值赋给其他变量(函数),也可以通过函数名来直接调用函数.调用符号即(). 嵌套函数 函数内部可以嵌套定义一层或多层函数,被嵌套的内部函数可以在外层函数体内部调用,也可以作为返回值直接返回 闭包 在一个嵌套函数中,内部被嵌套的函数可以调用外部函数非全局变量并且不受外部函数声明周期的影响(即可以把外部函数非全局变量视为全局变量直接调用). 高阶函数 把一个函数作为参数

Python学习笔记(十)—— 高级特性

一.切片 1.定义: 经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符. 2.语法: A[1:3] 取出1到3,都是正数的情况下,缺填的为0(第一个),end(最后一个) B[-3:] 取出倒数第三个到倒数第一个,都是负数的情况下,缺填的为-1(最后一个) C[1:10:2] 从1到10,每2个取一个 跟matlab差不多的语法,就是对一个向量可以进行矩阵操作.可以对List.tuple,string,dict,set等使用 二.切片 1.定义: 如果给

python语言特性-------python2.7教程学习【廖雪峰版】(一)

开始学习廖雪峰的py2.7教程: 2017年6月5日12:54:28 笔记: 廖雪峰python2.7教程1.用任何编程语言来开发程序,都是为了让计算机干活.  2.Python是一种相当高级的语言.代码少还不好?代码少的代价是运行速度慢.3.用Python可以做什么?可以做日常任务,比如自动备份你的MP3:可以做网站,很多著名的网站包括YouTube就是Python写的:可以做网络游戏的后台,很多在线游戏的后台都是Python开发的.4.Python的哲学就是简单优雅,尽量写容易看明白的代码,

python高级-------python2.7教程学习【廖雪峰版】(三)

2017年6月9日17:57:55 任务: 看完高级部分 笔记:1.掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了.2.在Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.基于这一思想,我们来介绍Python中非常有用的高级特性,一行代码能实现的功能,决不写5行代码.3.对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作4.在很多编程语言中,针对字符串提供了很多各种截

python学习篇:python简介与入门

简介与特点 python语言是由Guido van Rossum在1989年开发的,并最终于1991年初发表. python是一种面向对象.解释型的计算机语言,语法简洁清晰,被称为胶水语言,可移植性比较好,并且具有庞大的标准库. python的开发环境有许多,有IDEL(python内置的IDE).pythonWIN(适用于Windows).pycharm等等 优点:简单易学,并且是开源的,可扩展好,可以嵌入 c/c++语言中,向程序用户提供脚本功能 缺点:用缩进来区分语句格式,造成许多不便,运

python基础-------python2.7教程学习【廖雪峰版】(二)

2017年6月7日14:59:27任务:    看完python基础1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.2.因为感情的事,自己心情真是巨差,差到爆炸,提不起精神来学习,靠.3.整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差.4.字符串是以

python函数式编程-------python2.7教程学习【廖雪峰版】(五)

2017年6月13日19:08:13 任务: 看完函数式编程 笔记: 该看:函数式编程1.函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元.  理解:函数是面向过程的基本单元,这让我想起了C语言中的话.2.函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!  理解:函数式编程就是一种抽象程度很高的编程范式,纯粹的函

python函数-------python2.7教程学习【廖雪峰版】(三)

任务: 看完函数这一章    已完成 2017年6月8日16:23:491.函数的作用:写较少的代码实现较多的功能,可以多次被调用.2.可见,借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题.3.写计算机程序也是一样,函数就是最基本的一种代码抽象的方式.4.argument是参数的意思.5.比较函数cmp(x, y)就需要两个参数,如果x<y,返回-1,如果x==y,返回0,如果x>y,返回1:6.函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当