PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Python
[问题] for x in iterator(variable) 问题
楼主:
znmkhxrw
(QQ)
2017-09-23 16:50:19
(Python 2.7)
想请问for loop的写法中, for x in iterator, 而这个iterator会随着loop而更动的话
规则是什么?举例如下
(1)
k=10
for x in range(k):
print x,
k=k-1
作者:
jamesxxx1997
(黄~)
2017-09-23 17:31:00
建议不要在回捐内原地修改可以改成 : 1. 建立新串行、放入想要的元素
作者:
Sunal
(SSSSSSSSSSSSSSSSSSSSSSS)
2017-09-23 17:36:00
1. in py27 type(range(x)) 是list在(1)里面 range(k) 就是 [0, 1, 2, ...]loop里面改k自然没作用这在py3结果也是一样其实这两种caes 本来做的事情就不一样......k=k-1不会去改变list的长度阿
作者: wennie0433
2017-09-23 18:00:00
不一样的事情啊XD
作者: stucode
2017-09-23 18:35:00
在for循环中,in后面的陈述式只会被求值(evaluated)一次。在(1)之中,唯一的那一次就是首次进循环呼叫range(k)求值,之后会利用求值结果[0, 1, ..., 8, 9]来进行iteration,无论k在循环中如何变化,range(k)都不会再被呼叫第二次,也不会影响iteration的过程。
作者:
bxxl
(bool)
2017-09-23 18:38:00
楼上正解,range(k)执行一次后就与之后的k值无关x in a这个被执行一次则会指向a的本体(不会创造副本)所以去修改a,就会影响loop行为
作者:
jamesxxx1997
(黄~)
2017-09-23 20:44:00
谢谢bxxl大,受益良多XD
作者:
Sunal
(SSSSSSSSSSSSSSSSSSSSSSS)
2017-09-23 21:45:00
简单来说a只是指向range(10) loop里面只是把a改成指向[2,3]
作者: stucode
2017-09-23 21:59:00
就像楼上说的那样,a=[2,3]只是把名称a重绑定到一个新的list[2, 3],原本的iterator不会因此受到影响。
作者:
Sunal
(SSSSSSSSSSSSSSSSSSSSSSS)
2017-09-23 22:01:00
善用id() 就容易理解了
楼主:
znmkhxrw
(QQ)
2017-09-23 22:12:00
用id真的看出一些端倪 我再比较一下
作者:
karta0910489
(coyote)
2017-09-27 10:33:00
推详细 上了一课
继续阅读
[问题] 关于Python编码的疑惑
jamesxxx1997
用Django 写的圣经,不是Django 学习圣经喔
davidmaxlee
[问题] 将输出导入 re.compile
takahashikag
[问题] 要如何显示出shell script内的log
ghost108
Re: [问题] 深度学习(deep learning)出问题
f496328mm
[问题] pandas爬虫 .read_html
blackhores
Re: [问题] 深度学习(deep learning)出问题
pipidog
[问题] 读csv档的问题
SuperBu
[问题] PyQt5与matplotlib的结合
Fisher810228
[问题] 读写csv问题 list index out of range
almaplty
Links
booklink
Contact Us: admin [ a t ] ucptt.com