[问题] for 循环 迭代结果不一样

楼主: chocoluv (粉圆冰)   2019-03-24 14:24:47
想请问为何使用range去迭代,和不用range去迭代,输出的结果会有所不同?
这是用range(len())去迭代的方法:
https://i.imgur.com/fJzthe3.png
https://i.imgur.com/WfyE0AB.png
这是直接for i in list去迭代的结果:
https://i.imgur.com/mX7XbgV.png
https://i.imgur.com/VwXCJLN.png
简单来说就是都没有改成integer。
另外如果以comprehension去写:
number = [ int(i) for i in input.split()] 感觉方法和上面类似,结果却和上面的不同
,但和第一种方式一样有成功改成integer,想请教原因。
非常感谢!
作者: TitanEric (泰坦)   2019-03-24 15:07:00
第二种写法只是assign给copy而已 不会动到原本的list第一种写法你转int后又assign给list element 就会变comprehension跟一跟二都不一样 比较像是append新的
楼主: chocoluv (粉圆冰)   2019-03-24 15:56:00
感谢回复。想再请问:第二种写法不会动到原list,是因为for循环这样执行时,会直接copy一个number进行迭代的关系吗?所以如果要用for循环去修改原list内容时,只能用第一种方式吗?
作者: toy9986619 (幻飘)   2019-03-24 17:04:00
不然就要直接用 map function 取得改变后的 list第一个用法就是用阵列偏移量去取得值与改变阵列内容第二个算是把阵列的值 copy 出来给该变量而已希望我没有解释错误
作者: TitanEric (泰坦)   2019-03-24 23:26:00
楼上没错
作者: iphone2003 (307)   2019-03-25 10:57:00
那个comprehension比较像这样number = []for i in input().split:number.append(int(i))看起来有一点点像第二种所以可能因此搞混了,不过它们其实不一样不过比较方便的应该还是直接list(map(input, int))就好
作者: TitanEric (泰坦)   2019-03-25 15:20:00
大推楼上
楼主: chocoluv (粉圆冰)   2019-03-25 19:31:00
感谢!
作者: jlhc (H)   2019-03-25 20:12:00
这应该不只是python... 建议了解一下变量...
楼主: chocoluv (粉圆冰)   2019-03-25 21:37:00
好的><

Links booklink

Contact Us: admin [ a t ] ucptt.com