Python3基础笔记--生成器
目录:
一、列表生成器
二、生成器
三、迭代器
一、列表生成器
a = [x for x in range(10)] b= [y*2 for y in range(10)] def f(n)
return n*n*n c = [f(z) for z in range(10)]
列表生成器会将所有的内容加载到内存中,在生成大量的数据时,会占用内存
生成器只会生成一个 generator object ,占用很少内存,只会在调用时才产生值。且只能按顺序取值
二、生成器
1、基础代码
b = (x for x in range(10))
print(b) print(next(b)) # 等价于 b.__next__() 等价于python2中的b.next()
print(b.__next__()) for i in b:
print(i) '''output
<generator object <genexpr> at 0x000002900B1BB308>
0
1
2
3
4
5
6
7
8
9
'''
2、两种生成方式
① (x for x in range(10))
② yield方式
第②种代码
def foo():
print("ok")
yield 1 print("fine")
yield g = foo()
print(g) # next(g)
# aa = next(g)
# print(aa) for i in g:
print(i)
遇到函数中有 yield 则该函数为生成器
一个yield是一个生成器的生成物的结点,它会返回yield 后面的内容,然后结束,直到下一个next的调用
3、send()方法
def bar():
c = yield 0
print(c)
print("ok1")
count = yield 1 print(count)
print("ok2")
yield 2 g = bar()
print(g) # print(next(g))
print(g.send('ccc')) # TypeError: can't send non-None value to a just-started generator print(g.send("qqqq"))
send()方法与next()方法类似,但可以向生成器中传值,用于一些交互场景,但在第一个send()前如果没有next(),只能传一个send(None),否则会出现 TypeError: can't send non-None value to a just-started generator
三、迭代器
参考博客:Python之路,Day4 - Python基础4 (new版)
什么是迭代器?
满足两个条件:①有iter方法 ②有next方法
区别迭代器与可迭代对象
from collections import Iterator,Iterable l = [1, 2, 3] print(isinstance(l,list))
print(isinstance(l,Iterator)) # False 不是迭代器
print(isinstance(l,Iterable)) # True 是可迭代对象 for i in l:
print(i)
Python3基础笔记--生成器的更多相关文章
- Python3基础笔记_迭代器
# Python3 迭代器与生成器 import sys ''' 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开 ...
- Python3基础笔记--基础知识
目录: 一.变量问题 二.运算符总结 三.字符串问题 四.数据结构 五.文件操作 一.变量问题 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间.它自始至终都是在内存中活动,只有指明 ...
- Python3学习笔记----生成器
生成器的作用 生成器可以在循环的过程中推算出后续的元素,不必创建完整的list,从而节省大量空间. 生成器的创建 1.把一个列表生成式的 [ ] 改写为( ) # -*- coding: UTF-8 ...
- Python3基础笔记---面向对象
只是对一些新的知识的记录 1.创建类 class ClassName: <statement-1> . . . <statement-N> 类实例化后,可以使用其属性,实际上, ...
- Python3基础笔记--常用模块
目录: 参考博客:Python 之路 Day5 - 常用模块学习 Py西游攻关之模块 一.time模块 二.random模块 三.os模块 四.sys模块 五.hashlib模块 六.logging模 ...
- Python3基础笔记--装饰器
装饰器是十二分重要的高级函数. 参考博客:装饰器 所需前提知识: 1.作用域: LEGB 2.高阶函数 高阶函数是至少满足下列一个条件的函数: 1)接受一个或多个函数作为输入 2)输出一个函数 注意理 ...
- Python3基础笔记_字典
# Python3 字典 dict = {'} # 1.访问字典里的值 ,字典中没有key会报错 # 2.修改字典 print("修改之前:", dict['Beth']) dic ...
- Python3基础笔记_元组
# Python3 元组 ''' Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运 ...
- Python3基础笔记---序列化
1.json模块 菜鸟教程 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. import json json.dumps json ...
随机推荐
- Android简单实现BroadCastReceiver广播机制
Android中广播的作用是很明显的,当我们收到一条信息,可能我们的应用须要处理一些数据.可能我们开机.我们的应用也须要处理一些数据,这里都用到了广播机制,这里简单的实现了一个自己定义广播.看实例: ...
- MLPclassifier,MLP 多层感知器的的缩写(Multi-layer Perceptron)
先看代码(sklearn的示例代码): from sklearn.neural_network import MLPClassifier X = [[0., 0.], [1., 1.]] y = [0 ...
- 5.Git使用详细教程
转自:https://www.cnblogs.com/seven-ahz/p/7712125.html 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的 ...
- python中各项目文件含义(新手可看)
其他不用多说,这里主要阐述三个概念,包.模块.类 包我们可以看作一个包含__init__.py 和一系列.py 文件的文件夹,包含__init__.py这样做的目的是为了区别包和普通字符串,读者可以试 ...
- 模拟邮箱输入邮箱地址、收藏标签。input框输入内容后回车,内容显示成小方块并带删除按钮。
模拟邮箱输入邮箱地址.收藏标签: 文本框输入文字后按回车键或者分号键,输入框中的文字变成小块并带删除按钮和操作. 页面代码: <!DOCTYPE html> <%@ page lan ...
- ASP.NET 让ajax请求webform后台方法
$.ajax({ type: "POST", url: ".aspx/getSubjectDirection", data: JSON.stringify({ ...
- jQuery获取单选框(复选框)选中的状态
jQuery 获取单选框(复选框)选中的状态 <input type="checkbox" name="" id="choose"/& ...
- 服务器搭建域控与SQL Server的AlwaysOn环境过程(三)配置故障转移
0 引言 主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的. 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Windows Server20 ...
- SKU和SPU表的设计
1.什么是SKU,SPU SKU:Stock Keeping Unit (库存量单位)SKU即库存进出计量的单位,可以是以件.盒.托盘等为单位,是物理上不可分割的最小存货单元.在使用时要根据不同业态, ...
- Python开发的简单记事本
---恢复内容开始--- 主要是利用python 自带的tkinter 库 程序的基于python3.0以上 ,各个平台都可以使用包括linux ,windows , ...