<python全栈开发基础>学习过程笔记【17d】生成器
2017-09-19 01:20
951 查看
1.列表生成式
这个过程是从range(10)列表中依次取元素,计算元素的平方,再放到另一个列表中
2.可以把【1】中的代码写成这种形式
3.元组(列表)内元素个数为n,用元组(列表)给n个变量赋值
4.生成器有两种创建方式
方法一:
generator就是生成器
这里我们生成了一个生成器对象,为什么我们要生成这样一个对象,而不是列表?因为列表是把值存在列表中...当数据很多时,非常消耗内存。
生成器对象中什么都没存...但它什么都能搞到。用生成器省了空间。
生成器中的值只能一个一个的取
生成器是一个可迭代对象,所以上面的代码可以简写为:
方法二:
使用关键字yield
生成器的本质是一个带yield关键字的函数
当然还有下面的写法:
5..什么是可迭代对象?可迭代对象可以使用for in
内部有iter方法的对象就是可迭代对象
可迭代对象有:列表,元组,字符串,字典,生成器对象
2.可以把【1】中的代码写成这种形式
>>> def f(x): return x**2 >>> [f(i) for i in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
3.元组(列表)内元素个数为n,用元组(列表)给n个变量赋值
>>> a=(1,2,3) >>> x,y,z=a >>> x 1 >>> y 2 >>> z 3
>>> b=[1,2,3] >>> x1,y1,z1=b >>> x1 1 >>> y1 2 >>> z1 3
4.生成器有两种创建方式
方法一:
这里我们生成了一个生成器对象,为什么我们要生成这样一个对象,而不是列表?因为列表是把值存在列表中...当数据很多时,非常消耗内存。
生成器对象中什么都没存...但它什么都能搞到。用生成器省了空间。
生成器中的值只能一个一个的取
>>> g=( i**2 for i in range(10)) >>> next(g) 0 >>> next(g) 1 >>> next(g) 4 >>> next(g) 9 >>> next(g) 16 >>> next(g) 25 >>> next(g) 36 >>> next(g) 49 >>> next(g) 64 >>> next(g) 81 >>> next(g) #越界 Traceback (most recent call last): File "<pyshell#34>", line 1, in <module> next(g) StopIteration
生成器是一个可迭代对象,所以上面的代码可以简写为:
>>> s=(i**2 for i in range(10)) >>> for i in s: #内部:for in循环自动调用next,得到一个值,用i取这个值,使用之后,这个值被垃圾回收机制删除...所以很节省空间 print(i) 0 1 4 9 16 25 36 49 64 81
方法二:
使用关键字yield
生成器的本质是一个带yield关键字的函数
>>> def a(): print("ok1") yield 1 #yield返回一个值 print("ok2") yield 2 >>> next(a()) #a()就是一个生成器,每一次next()都会运行到返回一个值为止 ok1 1 >>> next(a()) ok1 1
当然还有下面的写法:
>>> for i in a(): #i每次存一个yield返回的值 print(i) ok1 1 ok2 2
5..什么是可迭代对象?可迭代对象可以使用for in
内部有iter方法的对象就是可迭代对象
可迭代对象有:列表,元组,字符串,字典,生成器对象
相关文章推荐
- <Python高级全栈开发工程师-1>学习过程笔记【181-184】正则表达式 <特殊字符><函数>
- <<Python基础教程>>学习笔记 | 第06章 | 抽象
- <<Python基础教程>>学习笔记 | 第04章 | 字典
- <Test-Driven Development with Python>学习笔记 第一部分 测试驱动开发基础
- <<Python基础教程>>学习笔记 | 第12章 | 图形用户界面
- <<Python基础教程>>学习笔记 | 第03章 | 字符串
- <<Python基础教程>>学习笔记 | 第13章 | 数据库支持
- <<Python基础教程>>学习笔记 | 第09章 | 魔法方法、属性和迭代器
- java 从零开始,学习笔记之基础入门<统计图>(四十四)
- <<Python基础教程>>学习笔记 | 第08章 | 异常
- <<Python基础教程>>学习笔记 | 第14章 | 网络编程
- python基础学习笔记<数据库>
- python基础学习笔记<内建模块与第三方模块>
- <<Python基础课程>>学习笔记 | 文章13章 | 数据库支持
- <<Python基础教程>>学习笔记 | 第02章 | 列表和数组
- python基础学习笔记<内建模块与第三方模块>
- python基础教程学习笔记 — 准备Linux下开发环境
- python基础学习笔记<面向对象编程>
- <<Python基础教程>>学习笔记 | 第07章 | 更加抽象
- <转> ios开发学习笔记(这里一定有你想要的东西,全部免费)