关于Python的惰性求值与惰性序列
一句话理解:

迭代器的一个优点就是它不要求你事先准备好整个迭代过程中所有的元素。

迭代器仅仅在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。

这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件,或是斐波那契数列等等。

这个特点被称为延迟计算或惰性求值(Lazy evaluation)。

Python惰性序列

Python的惰性序列多数指iterator,其特点正如同上文所述,具有惰性计算特点的序列称为惰性序列。

博主的解读:Python的iterator是一个惰性序列,意思是表达式和变量绑定(比如:调用iter()得到了一个iterator并赋值给一个变量)后不会立即进行求值,而是当你用到其中某些元素的时候才去求某元素对的值(比如next()访问到某元素才去实际计算某元素的值)。
惰性是指,你不主动去遍历它,就不会计算其中元素的值。

有什么意义?
一是这样我们就可以实现的无限序列的表示,比如全部的自然数(无穷尽),而不需要真的在内存中计算出所有的自然数(那根本不可能,因为内存也不是无限的),而是需要哪个数,计算到哪个数,或者需要哪些数,计算到那些数(比如前1000个)。
二是在大规模数据处理中起到延迟计算的作用。当你处理大规模数据时,一次性进行处理往往是不方便的。而惰性序列就可以解决这个问题,它把计算的步骤延迟到了要实际使用该数据的时候。
惰性序列可以看作是一个”流”,需要的时候从其中取一滴水。

【python】【惰性序列】【iterator】相关推荐

  1. Python惰性序列

    Python的iterator就是一个惰性序列,要说明什么是惰性序列,首先我们得知道什么是惰性计算. 事实上,很多如Java在内的高级语言都支持惰性序列. 惰性计算 引自维基百科: https://z ...

  2. python 惰性序列_菜鸟学飞自学Python(五)高阶函数

    (仅个人学习摘抄) 函数式编程 函数式编程就是一种抽象程度很高的编程范式,特点是允许把函数本身作为参数传入到另一个函数,还允许返回一个函数. 高阶函数 高阶函数--Higher-order funct ...

  3. python 惰性序列_讨论 - 廖雪峰的官方网站

    @廖雪峰 首先你要理解埃氏筛法的原理,其实是很简单的. 然后用惰性序列实现埃氏筛法时,只能想象抽象过程,不能推导每一步计算机是怎么算的,就像神经网络模拟的人工智能算法,连设计者也无法理解计算机执行的步 ...

  4. [译] Swift 中的惰性序列及其原理

    原文地址:Lazy Sequences in Swift And How They Work 原文作者:Bruno Rocha 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/g ...

  5. 过滤序列,惰性序列_Java 8的惰性序列实现

    过滤序列,惰性序列 我刚刚在GitHub上发布了LazySeq库-这是我最近进行的Java 8实验的结果. 我希望你会喜欢它. 即使您觉得它不是很有用,它仍然是Java 8(以及一般而言)中的函数式编 ...

  6. Java 8的惰性序列实现

    我刚刚在GitHub上发布了LazySeq库,这是我最近进行的Java 8实验的结果. 我希望你会喜欢它. 即使您觉得它不是很有用,它仍然是Java 8(以及一般而言)中的函数式编程的重要课程. 而且 ...

  7. python 分数序列求和公式_Python分数序列求和,编程练习题实例二十四

    本文是关于Python分数序列求和的应用练习,适合菜鸟练习使用,python大牛绕行哦. Python练习题问题如下: 问题简述:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13 要 ...

  8. Python的序列切片

           Python提供了一种把序列切成小块的操作,称为切片(slice)操作,其本质是访问由序列中的某些元素所构成的子集.Python的序列数据结构都支持切片操作,如列表.元组.字符串等,切片 ...

  9. 【Python基础入门系列】第07天:Python 数据结构--序列

    python内置序列类型最常见的是列表,元组和字符串.(序列是python中最基础的数据结构,而数据结构是计算机存储,组织数据的方式.) 另外还提供了字典和集合的数据结构,但他们属于无顺序的数据集合体 ...

最新文章

  1. (0068)iOS开发之AutoLayout框架Masonry使用心得
  2. 安装Debian 7.8 过程,以及该系统的配置过程
  3. Rancher前奏--配置Nexus
  4. java url下载ics_使用Microsoft Graph API处理外部(Internet / .ics)日历URL
  5. ceph rbd双挂载导致ext4文件系统inode链接数据污染
  6. 中缀表达式转化成后缀表达式
  7. OPPO手机刷机解锁救砖解账户锁方法
  8. 台式计算机无线网卡怎么找,怎么找出台式电脑中的无线网卡驱动
  9. 微软怎么设计Exchange 2003的体系结构
  10. 法学专业能从事计算机工作吗,未来20年,这5个专业都是“香饽饽”,毕业生工作好找前途大好!...
  11. 手机PDF文件转换成图片教程来了,PDF转换器推荐
  12. 腾讯政务协同解决方案:从微信生态到应用生态,从平台应用到应用中台
  13. 【leetcode】483. 最小好进制 Java题解
  14. 电脑启动项和系统引导项设置
  15. 硬件学习-无线网卡、无线上网卡
  16. 酒店视频点播系统服务器功能,基于局域网的酒店VOD视频点播系统设计
  17. 储能国际携上亿资金入场布局IPFS分布式存储,IPFS未来前景可期
  18. 网络 || icmp协议 || 三层交换机
  19. 高通CP侧代码常见修改
  20. SOLID是傻瓜的面向对象

热门文章

  1. 二维弹性波FWI源码和可执行程序
  2. python驱动photoshop_将photoshop纳入基于python的pipeline接口系统
  3. 经济不确定环境下,制造业的数字化转型之道
  4. 百度前端实习生面试(连跪之旅)
  5. 中国电脑教育报:搜索引擎十年有多少故事
  6. 微软官方简体中文版Vs2008与MSDN下载地址(2008年2月1日发布)
  7. 易语言晨风机器人源_易语言FQ自动聊天机器人源码,易语言自动聊天插件制作源码...
  8. Windows电脑软件程序多开软件的简单介绍:
  9. python中info什么意思_(python版本2.7)为什么我运行代码以后再看info文件夹里什么也没有啊?...
  10. html js引用本地资源,【基本解决】js加载本地文件