Python列表生成式和生成器
【1】列表生成器:列表生成式就是一个用来生成列表的特定语法形式的表达式。
1.基础语句结构:[exp for iter_var in iterable例如:a=[f(x) for x in range(10)]
2.工作过程:
迭代iterable中的每个元素;每次迭代都先把结果赋值给iter_var,然后通过exp得到一个新的计算值;最后把所有通过exp得到的计算值以一个新列表的形式返回。
相当于这样的过程:L = [] for iter_var in iterable:
L.append(exp)
详情介绍:https://www.cnblogs.com/yyds/p/6281453.html
【3】生成器:
1.作用:按照某种算法不断生成新的数据,直到满足某一个指定的条件结束。
构造生成器的两种方式:
- 使用类似列表生成式的方式生成 (2*n + 1 for n in range(3, 11))
- 使用包含yield的函数来生成
生成器的执行过程:
在执行过程中,遇到yield关键字就会中断执行,下次调用则继续从上次中断的位置继续执行。
生成器的特性:
- 只有在调用时才会生成相应的数据
- 只记录当前的位置
- 只能next,不能prev
生成器的调用
要调用生成器产生新的元素,有两种方式:
- 调用内置的next()方法
- 使用循环对生成器对象进行遍历(推荐)
- 调用生成器对象的send()方法
# print(list(range(10)))
# s=(x*2 for x in range(10))
# print(s)#<generator object <genexpr> at 0x000001EBD2E2CFC0>生成器对象
# for i in s:
#
# #print(s.__next__())
# print(next(s),i)#等价于s.__next__()取下一个元素 # print(next(s))
# print(next(s))
#生成器就是一个可迭代对象(Iterable) #生成器一共两种创建方式
#1(x*2 for x in range(5))
#2.yieId def foo():
print('ok')
yield 1
print('ok2')
yield 2
g=foo()
# print(g)
# for i in foo():
# print(i)
# next(g)
# next(g) #什么是可迭代对象(是否有_iter_)
l=[1,2,3]
l.__iter__() def fid(max):
n,before,after=0,0,1
while n<max:
yield
before,after=after,before+after
n=n+1 fid(5)
Python列表生成式和生成器的更多相关文章
- Python 列表生成式、生成器、迭代器
列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么 ...
- python 列表生成式,生成器&迭代器
列表生成式: 需求:要对列表 [0,1,2,3,4,5,6,7,8,9]的每个元素加1 用列表生成式一步搞定: li = [i+1 for i in range(10)] # 这种写法就叫列表生成式 ...
- 初学Python——列表生成式、生成器和迭代器
一.列表生成式 假如现在有这样一个需求:快速生成一个列表[1,2,3,4,5,6,7,8,9,10],该如何实现? 在不知道列表生成式的情况下,可能会这样写: a=[1,2,3,4,5,6,7,8,9 ...
- python学习笔记——列表生成式与生成器
1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行 ...
- Python之列表生成式、生成器、可迭代对象与迭代器
本节内容 语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterable.Iterator与Generator之间的关系 一.语法 ...
- 【转】Python之列表生成式、生成器、可迭代对象与迭代器
[转]Python之列表生成式.生成器.可迭代对象与迭代器 本节内容 语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterabl ...
- python的高级特性:切片,迭代,列表生成式,生成器,迭代器
python的高级特性:切片,迭代,列表生成式,生成器,迭代器 #演示切片 k="abcdefghijklmnopqrstuvwxyz" #取前5个元素 k[0:5] k[:5] ...
- 【Python】python内置函数、列表生成式、生成器
一.内置函数 1 print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 2 print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真 3 pri ...
- python 之 列表生成式、生成器表达式、模块导入
5.16 列表生成式 l=[]for i in range(100): l.append('egg%s' %i)print(l)l=['egg%s' %i for i in range(100 ...
随机推荐
- 从输入URL到页面加载的过程?由一道题完善自己的前端知识体系!
出处:http://mp.weixin.qq.com/s/qMsf4DcMhn2cf0fXC-PLVA 强缓存与弱缓存 缓存可以简单的划分成两种类型: 强缓存( 200fromcache)与 协商缓存 ...
- 如何编译运行HanLP自然语言处理包
master分支 对于master分支,编译方法如下: git clone https://github.com/hankcs/HanLP.git mvn install -DskipTests · ...
- RedHat6.5安装kafka单机
版本号: Redhat6.5 JDK1.8 zookeeper-3.4.6 kafka_2.11-0.8.2.1 1.软件环境 已经搭建好的zookeeper: RedHat6.5 ...
- 前端实现在线预览pdf、word、xls、ppt等文件
最近在做一个公司的资源管理系统,一些知识小记一下. 1.前端实现pdf文件在线预览功能 方式一.pdf文件理论上可以在浏览器直接打开预览但是需要打开新页面.在仅仅是预览pdf文件且UI要求不高的情况下 ...
- [转]windows环境下使用virtualenv对python进行多版本隔离
windows环境下使用virtualenv对python进行多版本隔离 最近在用python做一个文本的情感分析的项目,用到tensorflow,需要用python3的版本,之前因为<机器学习 ...
- 【巷子】---middleware---redux-promise-middleware---【react】
一.Middleware的由来 单一的state是存储在store中,当要对state进行更新的时候,首先要发起一个action(通过dispatch函数),action的作用就是相当于一个消息通知, ...
- JavaWeb工程 目录结构***
以下是mavaen推荐的项目目录. ├── pom.xml └── src ├── main │ ├── java │ │ └── group │ │ ...
- C++进阶--模板及关键字typename
//############################################################################ /* * 模板介绍 */ //函数模板 t ...
- elasticsearch 5.1 别的机器无法访问9200端口
版权声明:作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显 ...
- Android开发之环境配置篇
Android环境配置: 一.JDK(不用安装) 1.拷贝 D:\Java\jdk1.8.0_91 文件内容 2. 安卓ADT ADT(Android Development Tools):安装ADT ...