鱼C论坛

 找回密码
 立即注册
查看: 1566|回复: 3

[已解决]for循环迭代器

[复制链接]
发表于 2017-7-19 17:06:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在听小甲鱼老师讲解分支和循环过程中,有一个例子程序:
for i in range(10):
    if i%2 != 0:
        print(i)
        continue
    i += 2
    print(i)
在for循环内部,对i的值进行修改,比如  i+=2,当第一轮时 i=0, 经过表达式  i=2 在下一轮for循环的 i 值又重新变回 i=1请问各位大神,这是怎么回事呢。小弟在此拜谢。
最佳答案
2017-7-19 17:16:33
for i in range(10)
因为python的for比较特别,与java c等一些编程语言,方式不一样

每次循环时i的值是从后面的“迭代器”里面取出来的
range(10)是从0~9的整数,按顺序每次循环取一个
与循环体中i的值是无关的,所以即便for循环中改变了i的值i += 2,也不影响下一次循环时i从迭代器中取的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-19 17:16:33 | 显示全部楼层    本楼为最佳答案   
for i in range(10)
因为python的for比较特别,与java c等一些编程语言,方式不一样

每次循环时i的值是从后面的“迭代器”里面取出来的
range(10)是从0~9的整数,按顺序每次循环取一个
与循环体中i的值是无关的,所以即便for循环中改变了i的值i += 2,也不影响下一次循环时i从迭代器中取的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-19 17:28:25 | 显示全部楼层
shuofxz 发表于 2017-7-19 17:16
for i in range(10)
因为python的for比较特别,与java c等一些编程语言,方式不一样

谢谢,不过这样的话是否代表,python中for循环的迭代器是无法被改变的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 18:15:50 | 显示全部楼层
xkcx1988 发表于 2017-7-19 17:28
谢谢,不过这样的话是否代表,python中for循环的迭代器是无法被改变的

可以改变,但是最好不要那样做,比如:
用一个列表作为迭代器,但是在执行的过程中改变a,就是改变了取值的迭代器,会造成无法预计的后果,所以虽然可以这样做,但不要用这种写法
  1. a = [1,2,3,4,5]
  2. for i in a:
  3.     a.insert(1,2)
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 14:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表