列表生成式

生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))。需要生成[1x1, 2x2, 3x3, ..., 10x10]

循环:

for x in range(1, 11):

L.append(x * x)

print(L)

但是循环太繁琐。

而列表生成式则可以用一行语句代替循环生成上面的list:

[x * x for x in range(1, 11)]

写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来。

for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

[x * x for x in range(1, 11) if x % 2 == 0]

还可以使用两层循环,可以生成全排列:

[m + n for m in 'ABC' for n in 'XYZ']

生成器(generator)

生成器和生成式最大的区别就是将[]替换为()

输出可迭代对象generator需要使用next方法

例子1

a = (x*x for x in xrange(10) if x*x%2 == 0)

print(type(a))

print(a.next())

print(a.next())

for i in a:

print(i)

#generator保存的是算法,每次调用next(),就计算出下一个元素的值,直到计算到最后一个元素为止

例子2

def fib(n):

sum = 0

i = 0

while(i<n):

sum = sum +i

i+=1

yield sum

for x in fib(10):

print(x)

print(type(fib(10)))

#结果和上面的结果是一样的,包含yield语句的函数会被特地编译成生成器。当函数被调用时,他们返回一个生成器对象,这个对象支持迭代器接口。每当遇到yield关键字的时候,你可以理解成函数的return语句,yield后面的值,就是返回的值。但是不像一般的函数在return后退出,生成器函数在生成值后会自动挂起并暂停他们的执行和状态,他的本地变量将保存状态信息,这些信息在函数恢复时将再度有效,下次从yield下面的部分开始执行。

迭代器

Iterable(可迭代对象)  和  Iterator(迭代器) 主要区别是 :

凡是可以用 for 循环的 都是  Iterable(可迭代对象)   凡是需要通过next()函数获得值的可迭代对象都是 Iterator(迭代器)。

(所以生成器可以 被next()函数调用并不断返回下一个值的对象称为迭代器 ) (可以简单理解为生成器 就是 迭代器的可迭代对象)

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

转载于:https://blog.51cto.com/culiangmianbao/1978883

python生成式、生成器和迭代器相关推荐

  1. [转载] Python中生成器和迭代器的区别

    参考链接: Python迭代器 Python中生成器和迭代器的区别(代码在Python3.5下测试): Num01–>迭代器 定义: 对于list.string.tuple.dict等这些容器对 ...

  2. Python的生成器和迭代器

    Python生成器和迭代器 作者:王大为 时间:2016-10-24 11:00 一.生成器generator 分为以下两种: 1.列表生成器,形如:( i * i for i in range(10 ...

  3. python 面试生成器和迭代器_Python 中的迭代器与生成器

    导读 这篇文章主要介绍了 python 当中的迭代器与生成器,在涉及到大数量的场景应该考虑使用迭代器与生成器. 原文链接: https://russellgao.cn/python-iter/ 可迭代 ...

  4. python迭代器创建序列_第五章:Python基础の生成器、迭代器、序列化和虚拟环境的应用...

    本课主题 生成器介紹和操作实战 迭代器介紹和操作实战 序例化和反序例化 Json 和 Pickle 操作实战 字符串格式化的应用 创建虚拟环境实战 本周作业 生成器介紹和操作实战 什么是生成器,生成器 ...

  5. 彻底理解Python生成器和迭代器

    目录 1.列表生成式 2.生成器 3.迭代器 4.对yield的总结 5.补充:itertools库学习 1.列表生成式 首先举个例子 现在有个需求,看列表 [0,1,2,3,4,5,6,7,8,9] ...

  6. Python生成器与迭代器详细教程

    一.列表生成器 首先举个例子 现在有个需求,看列表 [0,1,2,3,4,5,6,7,8,9],要求你把列表里面的每个值加1,你怎么实现呢? 方法一(简单): info = [0, 1, 2, 3, ...

  7. Python高级特性:切片、迭代、列表生成式、生成器与迭代器

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 接着廖雪峰老师的学习教程,小编要开始加快推进Python的学习进程 ...

  8. 【Python基础】Python高级特性:切片、迭代、列表生成式、生成器与迭代器

    接着廖雪峰老师的学习教程,小编要开始加快推进Python的学习进程了.今天的笔记内容是Python高级特性,其中包括快速访问对象类型元素的切片.循环中的迭代意义.方便的列表生成式操作以及生成器和迭代器 ...

  9. python的高级特性:切片,迭代,列表生成式,生成器,迭代器

    python的高级特性:切片,迭代,列表生成式,生成器,迭代器 1 #演示切片 2 k="abcdefghijklmnopqrstuvwxyz" 3 #取前5个元素 4 k[0:5 ...

  10. python 生成式,迭代器,生成器

    DAY 6. 生成式,迭代器,生成器 6.1 生成式 6.1.1 列表生成式 list = [index for index in range(10)] 6.1.2 字典生成式 dict = {'zh ...

最新文章

  1. 计算机二级考试选择科目有级别,计算机二级考试该选哪一科目?
  2. [转]对贡献有激情,对回报有信心
  3. MySQL用source命令导入不记入binlog中【原创】
  4. WPF案例:如何设计历史记录查看UI
  5. python窗口动态实时显示时间_量化交易实时动态监视系统(纯Python,只需要浏览器就能用)-直接GitHub开源可下载...
  6. C#語法學習二(NameSpace)
  7. 什么是 Elasticsearch?一篇搞懂
  8. Candidate是什么
  9. 网络爬虫异常处理总结
  10. 阿里云禁止root用户直接登录的解决办法
  11. java中void是什么意思_JAVA里VOID是什么意思
  12. sql server XML中value(),exists(),nodes()方法
  13. tortoise set autocrlf convert
  14. 【初学者知识】了解一下BASIC语言
  15. 扫雷游戏软件测试,软件测试-扫雷游戏
  16. php时间戳 中文,PHP时间戳-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....
  17. 【POJ No. 2431】 丛林探险 Expedition
  18. 使用java的milo框架访问OPCUA服务的方法
  19. 拿破仑最欣赏的数学家,师从拉格朗日,撕逼泊松,一生痴迷热学最后却死于热学...
  20. android 4.0 bluetooth bt HFP/HSP分析

热门文章

  1. python运算符括号_Python合集之Python运算符(四)
  2. kafka学习_《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 RabbitMQ
  3. java图片转换成base64_Java将图片转换成Base64字符串
  4. python做的项目管理软件_幽雅的使用Python之软件管理
  5. 16进制与字符串之间的相互转换
  6. Complete Guide to Parameter Tuning in XGBoost (with codes in Python)
  7. energy计算机电脑,energy management
  8. MySQL同表关联的id替换名称_MySQL JOIN用另一个表中的值替换ID
  9. Leetcode-520. 检测大写字母
  10. 笔记-项目整体管理-项目收尾