迭代

【SICP练习】5 练习1.9

ぃ、小莉子 提交于 2021-02-06 07:59:42
 以下是第一个加起两个正整数的方法,其中 inc 将参数加 1 , dec 将参数减 1 。 (define (+ a b) (if(= a 0) b (inc (+ (dec a) b)))) 用代换模型展示 (+ 4 5) 如下: (+ 4 5) (inc (+ 3 5)) (inc (inc (+ 2 5))) (inc (inc (inc (+ 1 5)))) (inc (inc (inc (inc (+ 0 5))))) (inc (inc (inc (inc 5)))) (inc (inc (inc 6))) (inc (inc 7)) (inc 8) 9 如上所示,在代换模型展示中包含了伸展和收缩两个阶段,并且伸展阶段所需的额外存储量和计算所需的步数都正比于参数 a 。因此这是一个线性递归过程。 以下是另一个加起两个正整数的方法。 (define (+ a b) (if(= a 0) b (+ (dec a) (inc b)))) 同样用代换模型展示 (+ 4 5) 如下: (+ 4 5) (+ 3 6) (+ 2 7) (+ 1 8) (+ 0 9) 9 在这个过程中并没有任何增长或者收缩,而其计算过程可用固定数目的状态变量( a )描述。这是一个线性迭代过程。 版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http:/

JavaScript迭代方法的使用

房东的猫 提交于 2020-03-09 10:52:07
迭代方法 迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。 每一次对过程的重复称为一次“迭代”。 forEach : 数组的API因为调用方式 arr.forEach() ; forEach => this 这样的调用方式可以省去一个参数; var arr = [ 4 , 3 , 2 , 1 , 0 ] ; arr . forEach ( function ( item , index , arr ) { // 根据数组有多少项,执行对应次数的匿名函数; console . log ( item , index , arr ) ; } ) // 1. 参数 : 函数(函数会被执行数组项数次,并且传入数组的每一项内容,和遍历时的下标,数组本身) // 2. 返回值 : undefined ; // 3. 作用 : 遍历数组 , 写的代码量少,以后可能在各种环境配合下使用起来更简便: map 方法 有返回值; 就是每次函数执行的返回值组成的数组; 可以改变数组之中所有项,返回改变之后的新数组; var arr = [ 4 , 3 , 2 , 1 , 0 ] ; var res = arr . map ( function ( item , index , arr ) { // 基本结构使用和forEach没有任何区别; // console.log(item ,

016序列!序列!

北城以北 提交于 2020-02-11 14:34:35
016序列!序列! 一、列表、元组和字符串的共同点 都可以通过索引得到每一个元素 默认索引值总是从0开始 可以通过分片的方法得到一个范围内的元素的集合 有很多共同的操作符:重复*、拼接+、成员关系in,not in 二、序列常见BIF 1、list():把一个可迭代对象转换为列表 >>> a = list() >>> a [] >>> b = 'I Love FishC.com' >>> b = list(b) >>> b ['I', ' ', 'L', 'o', 'v', 'e', ' ', 'F', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm'] >>> c= (1,1,2,3,5,8,13,21,34) >>> c = list(c) >>> c [1, 1, 2, 3, 5, 8, 13, 21, 34] 2、tuple([iterable]):把一个可迭代对象转换为元组 3、str(obj):把obj对象转换为字符串 4、len(sub):返回sub的长度 >> > len ( a ) 0 >> > a [ ] >> > len ( b ) 16 >> > b [ 'I' , ' ' , 'L' , 'o' , 'v' , 'e' , ' ' , 'F' , 'i' , 's' , 'h' , 'C' , '.' , 'c' , 'o' ,

迭代器生成器

风流意气都作罢 提交于 2020-01-21 16:13:08
迭代器 迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代 while True: msg = input('>>: ').strip() print(msg) # 仅仅是单纯的循环,没有迭代,不是迭代器 下述while循环才是一个迭代过程,不仅满足重复,而且以每次重新赋值后的index值作为下一次循环中新的索引进行取值,反复迭代,最终可以取尽列表中的值 goods=['mac','lenovo','acer','dell','sony'] index=0 while index < len(goods): print(goods[index]) index+=1 为什么要有迭代器 对于序列类型:字符串、列表、元组,我们可以使用索引的方式迭代取出其包含的元素。但对于字典、集合、文件等类型是没有索引的,若还想取出其内部包含的元素,则必须找出一种不依赖于索引的迭代方式,这就是迭代器 可迭代对象 要想了解迭代器为何物,必须事先搞清楚一个很重要的概念:可迭代对象(Iterable)。 从语法形式上讲,内置有__iter__方法的对象都是可迭代对象,字符串、列表、元组、字典、集合、打开的文件都是可迭代对象: 'hello'.__iter__ (1

07-06 迭代器

依然范特西╮ 提交于 2019-12-26 15:09:23
[TOC] 一 迭代器介绍 迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代 while True: msg = input('>>: ').strip() print(msg) 下述while循环才是一个迭代过程,不仅满足重复,而且以每次重新赋值后的index值作为下一次循环中新的索引进行取值,反复迭代,最终可以取尽列表中的值 goods=['mac','lenovo','acer','dell','sony'] index=0 while index < len(goods): print(goods[index]) index+=1 插图:恶搞图43 1.1 可迭代对象 通过索引的方式进行迭代取值,实现简单,但仅适用于序列类型:字符串,列表,元组。对于没有索引的字典、集合等非序列类型,必须找到一种不依赖索引来进行迭代取值的方式,这就用到了迭代器。 要想了解迭代器为何物,必须事先搞清楚一个很重要的概念:可迭代对象(Iterable)。从语法形式上讲,内置有__iter__方法的对象都是可迭代对象,字符串、列表、元组、字典、集合、打开的文件都是可迭代对象: {'name':'egon'}.__iter__ {7,8,9}._

计算机网络 - 练习(一百三十七)

♀尐吖头ヾ 提交于 2019-12-07 09:27:18
计算机网络 练习(一百三十七) 在路由器的特权模式下键入命令setup,则路由器进入()模式。 A. 设置对话状态 B. 接口配置状态 C. 特权命令状态 D. 局部配置状态 ---------------------------------------- 答案 : A 解析 : 开启路由器后,路由器首先进入用户模式。从特权模式进入设置模式需要键入 setup 命令,用户模式不允许配置被查看或修改,特权模式允许用户去查看并修改路由器的配置。在用户模式下可以通过键入命令 enable 及输入启用口令或启用加密口令进入特权模式,故选 A)。 实现 VPN 的关键技术主要有隧道技术、加解密技术、()和身份认证技术。 A. 入侵检测技术 B. 病毒防治技术 C. 安全审计技术 D. 密钥管理技术 ---------------------------------------- 答案 : D 解析 : 实现 VPN 的关键技术主要有隧道技术、加解密技术、密钥管理技术和身份认证技术。 下列网络管理软件中不需要 SNMP 支持的是()。 A. CiscoWorks B. Netview C. Solarwinds D. Wireshark ---------------------------------------- 答案 : A 解析 : 无 ITU V.90 调制解调器(Modem) (

python 迭代器与生成器

不问归期 提交于 2019-12-03 03:22:33
参考: 1. http://python.jobbole.com/81916/ 2. http://blog.csdn.net/bluebird_237/article/details/38894617 3. http://www.runoob.com/python3/python3-iterator-generator.html 迭代器 先了解几个概念: 可以直接作用于for循环的对象统称为可迭代对象(Iterable)。 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator)。 所有的Iterable均可以通过内置函数iter()来转变为Iterator。 对于迭代器而言,通过next()函数实现“迭代”这一概念,在使用for in语句的时候,程序就会自动调用即将被处理的对象的迭代器对象,然后使用它的next方法,当长度超过了迭代器长度时,就会报StopIteration的异常。 >>> a=[ 1 , 2 , 3 ] >>> for i in a: ... print(i) ... 1 2 3 >>> next (a) Traceback (most recent call last): File "<stdin>" , line 1 , in <module> TypeError: list object is not an iterator >>

python-生成器(generation)

匿名 (未验证) 提交于 2019-12-02 22:51:30
阐述思路是:迭代(iteration)、迭代器(iterator)、生成器(generator)。 迭代 迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次 “ 迭代 ” ,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。 在python中,迭代通常是通过for ... in ...来完成的,而且只要是可迭代对象(iterable),都能进行迭代.这里简单讲下 iterator : iterator是实现了iterator.__iter__()和iterator.__next__()方法的对象。iterator.__iter__()方法返回的是iterator对象本身.根据官方的说法,正是这个方法,实现了for ... in ...语句.而iterator.__next__()是iterator区别于iterable的关键了,它允许我们显式地获取一个元素.当调用next()方法时,实际上产生了2个操作: 更新iterator状态,令其指向后一项,以便下一次调用 返回当前结果 (正是__next__(),使得iterator能在每次被调用时,返回一个单一的值;iterator是消耗型的,即每一个值被使用过后,就消失了.因此,你可以将以上的操作2理解成pop.) 【for…in…情况: 】 生成器 : 【基本概念: 常说的生成器

软件开发模式对比(瀑布、迭代、螺旋、敏捷)

不问归期 提交于 2019-11-29 05:07:32
1、瀑布模型 是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法。 瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。 步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。 瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整, 代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。 2、迭代式开发 也被称作 迭代增量式开发 或 迭代进化式开发 ,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。 什么是迭代式开发? 每次只设计和实现这个产品的一部分, 逐步逐步完成的方法叫迭代开发, 每次设计和实现一个阶段叫做一个迭代. 在迭代式开发方法中,整个开发工作被组织为一系列的短小的、 固定长度(如3周)的小项目,被称为一系列的迭代。 每一次迭代都包括了需求分析、设计、实现与测试。 采用这种方法,开发工作可以在需求被完整地确定之前启动, 并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。 再通过客户的反馈来细化需求,并开始新一轮的迭代。 迭代式开发的优点:   1、降低风险   2、得到早期用户反馈   3、持续的测试和集成   4