首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么函数体中的for of循环没有给出传统for循环所做的预期输出?

函数体中的for of循环没有给出传统for循环所做的预期输出的原因是因为for of循环是用于遍历可迭代对象(如数组、字符串、Set、Map等)的语法结构,而不是用于控制循环次数的。

传统的for循环通过指定循环的起始条件、终止条件和每次循环的递增/递减操作来控制循环次数。而for of循环则是通过迭代器(Iterator)来遍历可迭代对象的每个元素,每次循环都会自动获取下一个元素,直到遍历完所有元素为止。

因此,如果在函数体中使用for of循环,并期望它像传统的for循环一样输出预期结果,那么可能是因为对循环的次数有误解或者对可迭代对象的结构有误解。

需要注意的是,for of循环遍历的是可迭代对象的值,而不是索引。如果需要获取索引,可以使用数组的entries()方法或者字符串的split()方法将其转换为数组后再使用for of循环。

总结起来,函数体中的for of循环没有给出传统for循环所做的预期输出是因为它们的功能和使用方式不同,for of循环用于遍历可迭代对象的值,而传统for循环用于控制循环次数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

LeetCode | 28.实现strStr()

strStr() 函数。...函数定义如下: int strStr(char * haystack, char * needle){ } 这个题目就是一个简单字符串工具库函数实现,该函数中有两个参数,分别是两个字符串指针...看一下外层循环为什么是 haystack 长度减去 needle 长度次数,如下图: haystack 中保存字符串 hello 长度是 5,needle 中保存字符串 lo 长度是...,点击右下角 “执行代码”,然后观察 “输出” 和 “预期结果” 是否一致,一致的话就点击 “提交” 按钮。...点击 “提交” 按钮后,系统会使用更多测试用例来测试我们写函数,如果所有的测试用例都通过了,那么就会给出 “通过” 字样,如果没有通过,会给出失败那一组测试用例,我们继续修改代码。

37020

【Python编程导论】第六章- 测试与调试

 对于每个for循环,需要以下测试用例: 未进入循环(例如,如果使用循环遍历列表所有元素,则必须测试空列表); 循环只被执行一次; 循环被执行多于一次;  对于每个while循环: 包括上面...在这个阶段,测试者构建并执行测试, 用来确定代码每个独立单元(例如,函数)是否正常工作 第二个阶段称为 集成测试,用来确 定整个程序能否按预期运行。 在工业界,测试过程通常是高度自动化。...他们会使用 测试驱动程序 显性错误有明显表现,如程序崩溃或运行时间异常长(可能永不停止) 隐性错误没有明显表现,程序会正常结束,不出任何问题——除了给出一个错误答案 持续性错误在程序每次使用相同输入运行时都会发生... 不要问自己为什么程序没有按照你想法去做,而要问自己程序为什么像现在这样做。后者应该更容易回答,要想弄清楚如何修复程序,这可能是一个很好的开始。  记住,错误可能不在你认为会出错地方。...向其他人解释为什么程序某个地方不会出现错误是个很好选择。  不要盲目相信任何书面上东西。特别是,不要相信文档。代码行为可能与注释不一样。  暂停调试,开始编写文档。

1.6K30

这里是强化学习入门,入门 | 绝对新手友好

; · 环境变化,获得新状态S1 (A0发生后某一帧) ; · 环境给出了第一个奖励R1 (没死:+1) ; 于是,这个loop输出就是一个由状态、奖励和行动组成序列。...而智能目标就是让预期累积奖励最大化。 奖励假说为根基 问题来了,目标为什么预期累积奖励最大化? 因为,强化学习原本就是建立在奖励假说基础之上。想表现好,就要多拿奖励。...价值函数会告诉我们,智能在每个状态里得出未来奖励最大预期 (maximum expected future reward) 。...一个状态下函数值,是智能可以预期未来奖励积累总值,从当前状态开始算。 ? 智能体要用这个价值函数来决定,每一步要选择哪个行动。它会采取函数值 (就是Q值) 最大那个行动。 ?...· Q学习,是利用一个传统算法创建Q-table,来帮助智能找到下一步要采取行动。 · DQN,是利用深度神经网络来近似Q值。 恭喜你读到现在。这第一篇文章信息量还是不小。 ?

36420

LeetCode | 1.两数之和

上面的题就是 两数之和 题目的截图,同时 LeetCode 会根据选择语言给出了一个类定义或者函数定义,然后在其中实现 两数之和 解题过程。...} }; C++ 类 twoSum 成员函数有两个参数,分别是 nums 和 target,这两个参数和题目中描述是一样。...“执行代码”,然后观察 “输出” 和 “预期结果” 是否一致,一致的话就点击 “提交” 按钮。...点击 “提交” 按钮后,系统会使用更多测试用例来测试我们写函数,如果所有的测试用例都通过了,那么就会给出 “通过” 字样,如果没有通过,会给出失败那一组测试用例,我们可以根据给出测试用例来继续修改代码...观察两个程序输出结果,使用 C 语言执行时间要比使用 C++ 执行时间长一些,因为在 C 语言中使用了两重循环,它时间复杂度为 O(n^2),而在 C++ 只使用了单个循环,它时间复杂度为

35030

面试官问我 JS foreach 能不能跳出循环

当年懵懂无知我被问到这个问题时,脑袋一片空白,因为我一度认为forEach可能只是为了方便书写所创造出来语法糖,在业务代码也经常使用,但没有思考过它存在问题,本文旨在记录自己心路历程,抛砖引玉...那么回到标题,首先forEach是不能使用任何手段跳出循环为什么呢?继续往下看。...forEach特性,而且也很明显就是不能跳出循环,因为根本没有办法操作到真正for循环。...这点我认为仁者见仁智者见智吧,在forEach设计没有中断循环设计,而使用try-catch包裹时,当循环过大性能会随之下降,这是无法避免,所以抛出异常可以作为一种中断forEach手段,...(x); // 0 1 3 4 }); 文档还提到forEach需要一个同步函数,也就是说在使用异步函数或Promise作为回调时会发生预期以外结果,所以forEach还是需要慎用。

3.2K10

Python每日一题

题目:如果理解 Python 闭包? 答案要点如下: 解释什么是 返回函数,这是像类似 JAVA 这样静态语言所做不到功能。即在函数嵌套定义一个函数,而在外层函数可以返回内层函数名。...return 语句时,整个函数执行完毕 # 但此时,inner 函数还存在 outer 局部变量 i 引用 # 这种称之为闭包 return inner 闭包所体现延迟绑定...,当我们在外层有循环变量时,在内层使用可能不会出现我们预期效果。...下面代码现象就是延迟绑定,即当我们在返回 inner 这个函数时,它里层代码并没有执行,而当我们 print…for…in 去调用返回接受到函数时,它才真正执行,而此时,i 值已经是3了。...解决思路是因为上述代码循环变量之所以没有一次一次生效,而是在最后生效,是因为它整体都在 inner 函数

31910

Jurgen Schmidhuber新论文:我就是我,你GAN还是我

在该环境,单个智能拥有两个独立学习神经网络。第一个神经网络在没有教师也没有外部奖励满足用户定义目标的情况下,生成数据。第二个神经网络学习预测输出结果属性,以最小化误差。...这些随机单元所做事情等同于让 C 感知伪随机数字或噪声所完成事情,这与 GAN 生成器类似。 AC1990 第二个神经网络是世界模型 M。...在 AC1990 第一个变体,出于通用性原因,M 也是循环。M 以 C 输出 x ∈ R^n 为输入,并预测其对环境影响或后果 y ∈ R^q。...环境将对输出动作 x 给出回应,将 x 对环境影响返回为二元观测结果 y ∈ R,如果图像为真,则 y = 1,反之则 y = 0。...如果我们将一个从随机输入编码训练 GAN 生成器视为一个独立组件,并在其输出层添加一个传统编码器网络,并训练这个编码器将输出特征映射到原始随机编码,那么在理想情况下,这个编码器会成为一个针对其原始数据特征编码生成器

69620

LeetCode | 231.2

此题,给出了一个简单函数定义,该函数定义如下: bool isPowerOfTwo(int n) { } 题目分析 题目要求计算一个整数是否是 2 幂次方。...2 幂次方有一个特点,根据这个特点通过循环可以得出指定整数是否为 2 幂次方。来观察一下它特点。 ?...在上面的图中,给出了公式,如果 n & (n - 1) == 0,那么 n 就是 2 幂次方。比如 4 & (4 - 1) = 0,那么 4 就是 2 幂次方。...提交结果 在写完 isPowerOfTwo 函数后,点击右下角 “执行代码”,然后观察 “输出” 和 “预期结果” 是否一致,一致的话就点击 “提交” 按钮。...点击 “提交” 按钮后,系统会使用更多测试用例来测试我们写函数,如果所有的测试用例都通过了,那么就会给出 “通过” 字样,如果没有通过,会给出失败那一组测试用例,我们继续修改代码。

28330

Go 循环之for循环,仅此一种

现在我们继续看这个例子,我们预期输出结果可能是这样: 0 1 1 2 2 3 3 4 4 5 那实际输出真的是这样吗?...启动时变量 i 和 v 值,与我们最初预期”不符,这是为什么呢?...而 Goroutine 执行闭包函数引用了它外层包裹函数变量 i、v,这样,变量 i、v 在主 Goroutine 和新启动 Goroutine 之间实现了共享,而 i, v 值在整个循环过程是重用...那么如何修改代码,可以让实际输出和我们最初预期输出一致呢?...为什么会是这种情况呢?原因就是参与 for range 循环是 range 表达式副本。也就是说,在上面这个例子,真正参与循环是 a 副本,而不是真正 a。

33230

强化学习简介(第一部分)

现在,环境处于新状态S¹(来自马里奥或游戏引擎新帧) 环境给予RL智能一些奖励 R¹。它可能会给出+1,因为智能没有死。...这个RL循环一直持续到我们死了或到达目的地,并且它不断输出一系列状态,动作和奖励。 我们RL智能基本目标是最大化奖励。 奖励最大化 RL智能工作原理基于奖励最大化假设。...即随机策略→p(A = a | S = s) 2.基于价值 在基于价值强化学习,智能目标是优化价值函数V(s),这个函数被定义为告诉我们智能体要达到每个状态下获得最大预期未来奖励。...每个状态价值是RL智能可以预期从特定状态获得奖励总额。 ? 智能将使用上述价值函数来挑选每个步骤中选择状态。智能将始终采用具有最大价值状态。...用于训练该算法方法称为策略梯度。我们从游戏引擎提供随机帧,算法关于产生随机输出给出奖励,并将其反馈给算法或网络。循环此过程。 ?

60930

好了,别问了,确实是被优化了!

由于循环代码被判定为热点代码,所以经过 JIT 编译后 getAndAdd 方法进入安全点机会被优化掉了,所以线程不能在循环体内进入安全点。 是的,确实被优化了,我打这个词都感觉很残忍。...针对程序表现和预期不一致问题,第一个解决方案是这样: 把 int 修改为 long 就搞定了。至于为什么,之前文章已经说明了,这里就不赘述了。...很明显,我们示例代码就属于这种情况。 在我们示例代码循环触发了热点代码编译动作,而循环只是方法一部分,但编译器依然必须以整个方法作为编译对象。...说明循环里面可以进入 safepoint,程序执行结果符合预期。 所以结果是怎么样呢?...第二个地方: On 'non-counted' loop back edge in C1/C2 compiled code 在 C1/C2 编译代码 "非计数 "循环每次循环结束之后。

56210

如何实现模拟人类视觉注意力循环神经网络?

关于给定任务,根据模型做出一系列决定给出表现评价,最大化表现评价,对其进行端到端优化。 首先为什么要用增强学习呢?...可惜智能行动不是可靠(类似现实对机器人控制不可能完全精确),环境不一定沿这个解发展。...我们讲了半天,一个重要概念没有讲,下面来讲讲循环神经网络 RNN。...这个网络最直观印象是什么呢,就是线多。在传统神经网络模型,是从输入层到隐含层再到输出层,层与层之间是全连接,每层节点之间是无连接。但是这种普通神经网络对于很多问题却没有办法。...RNNs 之所以称为循环神经网路,即一个序列当前输出与前面的输出也有关,网络会对前面的信息进行记忆并应用于当前输出计算,具体表现形式为即隐藏层之间节点不再无连接而是有连接,并且隐藏层输入不仅包括输入层输出还包括上一时刻隐藏层输出

79140

Matlab基本语法8

逻辑错误:这样错误非常隐蔽,通常是对程序算法考虑不周全,程序可以正常执行,但是输出结果不符合预期值。 对于不是很复杂程序,额可以使用直接调试法进行程序调试。...1.如果程序出错或者给出警告信息,仔细分析出错或警告信息,会得到出错原因。 2.在程序,利用函数disp()将函数M文件中间结果显示出来。...3.在一个函数M文件,可以将该函数M文件修改为脚本M文件进行调试。 4.将程序某些行通过注释进行屏蔽,在程序行前面输入注释符%。 5.在程序调试地方添加keyboard函数。...2.m文件性能分析 在matlab,通过程序调试,可以改正程序语法错误和逻辑错误等。程序哦啊是结束后,用户编写matlab程序就可以正常运行了,旦可能并不是最优,运行效率也不是最好。...3.编程技巧 (1)计时:采用函数tic和toc进行计时,使用函数etime进行计时,利用cputime进行计时 (2)防止程序进入死循环 (3)如果必须使用多重循环,但是两个循环执行次数不同,建议在外循环次数少

74670

LeetCode | 24.两两交换链表节点

上面的题就是 两两交换链表节点 题目的截图,同时 LeetCode 给出了一个函数定义,然后要求实现链表两两交换函数。...有了这些指针,就可以完成我们交换了,如下图: ? 当交换完成以后,就接着移动这三个指针,进行下一次交换。这样就构成了一个循环,怎么来判断是否循环?...让 new = head,当 new 为 NULL 或者 new->next 为 NULL 时候,就说明没有节点或者只剩一个节点了,就不用再交换了,这样循环就结束了。...提交结果 在写完 swapPairs 函数后,点击右下角 “执行代码”,然后观察 “输出” 和 “预期结果” 是否一致,一致的话就点击 “提交” 按钮。...点击 “提交” 按钮后,系统会使用更多测试用例来测试我们写函数,如果所有的测试用例都通过了,那么就会给出 “通过” 字样,如果没有通过,会给出失败那一组测试用例,我们继续修改代码。

44430

《软件工程导论第6版》--张海藩 牟永敏 课后答案及其详解 第7章 实现

程序没有预先输入T值 “N=0"应该是"MATCH=0” 第3题 3.在第2题设计若输入N值或KEYWORD不合理,会发生问题。 (1) 给出这些变量不合理值例子。...1.AARON,JULES(book) ③用比执行命令b后列出最大行号大1数作为命令s参数 预期输出:“命令s参数不在行号列表” ④用数字和标点符号作为命令b和命令f参数 预期输出...)、d或f() 预期输出:系统提供默认参数或给出出错信息 ⑩使用拼错了作者姓名作为f参数 预期输出:“找不到这们作者著作” 第6题 6.航空公司A向软件公司B订购了一个规划飞行路线程序...,size小于数组大小,并给出需要查找值,该值在somearray预期输出:返回-1; ⑤首先给出某个数组somearray和size,size大于数组大小,并给出需要查找值,该值不在...somearray 预期输出:返回-1; ⑥首先给出某个数组somearray和size,size大于数组大小,并给出需要查找值,该值在somearray 预期输出:返回-1;

1.7K10

LeetCode | 102.二叉树层次遍历

上面的题就是 二叉树层次遍历 题目的截图,同时 LeetCode 会根据选择语言给出一个类定义或者函数定义,然后在其中实现 二叉树层次遍历 解题过程。...C++ 语言给出函数定义如下: /** * Definition for a binary tree node....然后保存当前节点元素到数组。然后临时队列元素,进入真正要进行循环获取层次队列,队列始终要保持只有当前层次节点。...提交结果 在写完代码后,点击右下角 “执行代码”,然后观察 “输出” 和 “预期结果” 是否一致,一致的话就点击 “提交” 按钮。...点击 “提交” 按钮后,系统会使用更多测试用例来测试我们写函数,如果所有的测试用例都通过了,那么就会给出 “通过” 字样,如果没有通过,会给出失败那一组测试用例,我们可以根据给出测试用例来继续修改代码

43330

LeetCode | 107.二叉树层次遍历2

这道题同样是二叉树题目,也同样是二叉树层次遍历问题。但是最终输出是一个二维数组,二维数组每一维数组都保存着二叉树每层节点值,而且是从树叶到树根顺序进行保存。...二叉树根节点进入了队列,然后开始循环。那么就开始让队头 节点3 出队,并找 节点3 左孩子和右孩子。...tmp.empty()) { que.push(tmp.front()); tmp.pop(); } 提交结果 在写完 levelOrderBottom 函数后,点击右下角...“执行代码”,然后观察 “输出” 和 “预期结果” 是否一致,一致的话就点击 “提交” 按钮。...点击 “提交” 按钮后,系统会使用更多测试用例来测试我们写函数,如果所有的测试用例都通过了,那么就会给出 “通过” 字样,如果没有通过,会给出失败那一组测试用例,我们继续修改代码。 ?

32540

LeetCode | 66.加一

两个数组元素不同 在原始数组每一个元素都是 9 情况下,我们新数组数组元素个数一定要比原始数组元素个数多一个。不但如此,在前面两幅图中,循环时候,两个数组下标是相同。...而对于当前图来说,两个数组在进行循环时候,下标是不相同。...{ pArr[0] = sf; } *returnSize = size; return pArr; } 提交结果 在写完 plusOne 函数后...,点击右下角 “执行代码”,然后观察 “输出” 和 “预期结果” 是否一致,一致的话就点击 “提交” 按钮。...点击 “提交” 按钮后,系统会使用更多测试用例来测试我们写函数,如果所有的测试用例都通过了,那么就会给出 “通过” 字样,如果没有通过,会给出失败那一组测试用例,我们继续修改代码。

35520

每个C++开发者都应该学习和使用C++11特性

nullptr 是一个关键字,它代表一个空指针,具有明确空指针类型,不同于传统 C++ 中使用 NULL 或 0 表示空指针方式。 1. 为什么引入 nullptr?...基于范围for循环语法形式如下: for (declaration : expression) { // 循环 } 其中: declaration:在每次循环迭代,声明一个变量,用于接收容器元素...expression:表示要遍历容器、数组或其他可迭代对象。 循环:在每次迭代执行操作。...:1 2 3 4 5 在循环,x 依次取 expression 每个元素值,而不是索引或指针。...}; 在派生类中使用 override 关键字,如果没有正确地重写基类函数,编译器会产生错误。

5610
领券