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