[問題] for x in iterator(variable) 問題
(Python 2.7)
想請問for loop的寫法中, for x in iterator, 而這個iterator會隨著loop而更動的話
規則是什麼?舉例如下
(1)
k=10
for x in range(k):
print x,
k=k-1
------------------------------
console: 0 1 2 3 4 5 6 7 8 9
(2)
a=range(10)
for x in a:
print x
del(a[len(a)-1])
----------------------------
console: 0 1 2 3 4
這兩個的都是每次loop中都會改到原始iterator的長相
為什麼系統就認為在(1)的case中:range(k)=range(10) fixed
但是卻在(2)的case中知道要每次都修正一次a
目前我只能說服自己說就這系統對於這兩種寫法有不同作為
請問有規則或其他解釋嗎?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.25.34
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1506156622.A.78D.html
推
09/23 17:31, , 1F
09/23 17:31, 1F
推
09/23 17:34, , 2F
09/23 17:34, 2F
j我知道有其他寫法 只是我想知道不同的點XD
因為如果理解正確的話 這兩個print出來要一樣
現在不一樣 一定有哪個地方理解錯了@@
推
09/23 17:36, , 3F
09/23 17:36, 3F
→
09/23 17:37, , 4F
09/23 17:37, 4F
→
09/23 17:38, , 5F
09/23 17:38, 5F
S大 可是2.的case type(a)也是list耶
※ 編輯: znmkhxrw (111.255.25.34), 09/23/2017 17:42:11
推
09/23 17:40, , 6F
09/23 17:40, 6F
推
09/23 17:47, , 7F
09/23 17:47, 7F
推
09/23 17:52, , 8F
09/23 17:52, 8F
推
09/23 18:00, , 9F
09/23 18:00, 9F
→
09/23 18:35, , 10F
09/23 18:35, 10F
→
09/23 18:35, , 11F
09/23 18:35, 11F
→
09/23 18:35, , 12F
09/23 18:35, 12F
→
09/23 18:35, , 13F
09/23 18:35, 13F
→
09/23 18:35, , 14F
09/23 18:35, 14F
推
09/23 18:38, , 15F
09/23 18:38, 15F
→
09/23 18:39, , 16F
09/23 18:39, 16F
→
09/23 18:40, , 17F
09/23 18:40, 17F
推
09/23 20:44, , 18F
09/23 20:44, 18F
原本我也接受這說法 因為可以case1,2都過得去
但是剛剛試了:
a=range(10)
for x in a:
print x
a=[2,3]
我跟case2一樣改變a
但是卻跑出跟case1一樣的結果.....
※ 編輯: znmkhxrw (111.255.25.34), 09/23/2017 20:51:59
推
09/23 21:45, , 19F
09/23 21:45, 19F
→
09/23 21:59, , 20F
09/23 21:59, 20F
→
09/23 21:59, , 21F
09/23 21:59, 21F
推
09/23 22:01, , 22F
09/23 22:01, 22F
好 我試試看 謝謝你們的解釋^^
※ 編輯: znmkhxrw (111.255.25.34), 09/23/2017 22:04:42
→
09/23 22:12, , 23F
09/23 22:12, 23F
推
09/27 10:33, , 24F
09/27 10:33, 24F