python for 第一次输出列表第一个 第二次输出列表第二个_再说For Each循环——无论Python还是VBA都要看...

本文强调Python和VBA中的for循环(For Each)仅适用于读取元素,不建议用于修改列表。解释了在for循环中修改循环变量不会影响循环次数的原因,并提供示例说明。同时指出,要修改列表元素应使用while循环或For Next循环,通过下标直接引用修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好!今天我们发布了《全民一起玩Python 基础篇》的第十一回 “入列表五湖四海皆兄弟,for循环一步一人无漏缺”,同时在 www.ukoedu.com 中上传了笔记、参考资料以及4道练习题。

不过尽管在本节视频中已经讲过,杨老师还是希望在公众号里向大家再次强调一个重要问题:Python里的 for in 循环 (相当于VBA中的 For Each 循环)只宜用来读取元素、不宜用于修改列表(或数组等)元素!而这个问题无论对于Python的for in循环,还是对于VBA中的For Each循环,道理都是一样的。

之前就有同学通过公众号向杨老师问过相关的问题,如果在一个for in 循环的循环体里修改了循环变量数值,那么最终输出是什么?不过由于微信并非我们的答疑平台,所以等杨老师注意到这个问题时,该消息已经过期无法回复。所以还是建议大家有问题到论坛 forum.yycollege.com 提问,或者在Q群中向其他同学请教。

言归正传,请大家看看下面这个代码运行的结果是什么(左边为Python,右边为VBA):

9693991e5c863747d74d61c79aedaa8f.png

可能有些同学会觉得,这个程序输出一个 “1” 之后,就会停止循环并结束,因为第一次循环后 i 就变成了100,超出了预定的循环范围。

不过实际运行就会发现,这个程序忠实的循环了4次,依次输出 1、2、3、4,似乎完全没有受到 i=100 这句代码的影响!

5a0e1f9274ad80e0bb922ec399d2e568.png

为什么会这样?关键就在于 for in 循环 (For Each In 循环) 的含义:它的功能是把列表中的每个元素依次取出并赋值给 i,而不是像VBA中的 For i=1 to 4 那样指定 i 的变化范围!

所以,第一次循环时 i 的数值等于列表中的第一个元素 1 ;然后即使我们把 i 修改为 100,再次循环时,for 还是回到列表中,取出第二个元素再次赋值给 i ,使之从100又被改成了2,如此类推。因此 i = 100 并没有影响到循环的次数。

反之如果我们在VBA 的 For i=1 to 4 这种循环里写上 i=100 ,就会导致循环提前结束,因为再次回到For语句时VBA只检查此时的 i 是否已经超出了预先指定的上限 4 ,超过则退出。

同样的道理,使用 For Each 或 python 的 for in 循环可以将列表元素的数值赋值给循环变量(比如前面例子里的 i ),但却不能通过 i 来修改列表的元素。比如下面的程序里:虽然每次循环都有 i = i + 1, 但是修改的只是变量 i 的值 —— 让 i 的值从“等于列表中某元素” 变化为 “列表中某元素多 1 ”,而 “列表中的某元素” 却从未被赋值修改过。所以在循环结束后,查看列表会发现没有任何变化。

a64d46250c591145bc6f4290a3234a79.png

那么怎样能够修改列表中的元素呢?答案就是使用 while 循环或VBA中的 For Next 循环,通过下标直接引用列表元素并修改!

以上这些内容对VBA的For Each循环同样适用,我们在本节以及下周即将发布的课程里都会用视频案例强调讲解,请大家特别记住!

先写到这里吧,再有几分钟就是GoT最后一季,杨老师终于也要感受到大家追剧催更的痛苦了!

2d13259913aa6e1462d5656146969a58.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值