我無法理解為什么計數器變數即使在嵌套回圈中遞增,對父回圈運行的次數也沒有任何影響!
0 1 2當嵌套回圈內的增量應該阻止它執行第二次和第三次時,下面的代碼給出了輸出。
for i in range(3):
print(i)
for j in range(2):
i = i 2
是i嵌套的內部指向不同的i!
uj5u.com熱心網友回復:
一個for回圈是一個奇特的一種賦值陳述句; 在每次迭代開始時分配回圈索引。
代碼
for i in range(3):
print(i)
for j in range(2):
i = i 2
等效于
itr1 = iter(range(3))
while True:
try:
i = next(itr1)
except StopIteration:
break
itr2 = iter(range(2))
while True:
try:
j = next(itr2)
except StopIteration:
break
i = i 2
賦值i = next(itr1)忽略i在前一次迭代中所做的任何其他事情:值僅取決于 的狀態itr1,而不是 的當前值i。
uj5u.com熱心網友回復:
如果在回圈遞增i 后顯示,您將看到更改
for i in range(3):
print(i)
for _ in range(2): # j is not used
i = 2
print(i) # I'm new!
每次第一行運行時,它都會i用range()序列中的下一個值重新標記,丟棄之前的值
uj5u.com熱心網友回復:
您不會在任何地方存盤增量的結果。它是這樣的:i從 分配一個值range(),列印它,然后j獲取分配的值,i = 1然后回圈再次開始,并i從 分配下一個值range()。這應該可以作業
for i in range(3):
for j in range(2):
i = i 2
print(i)
uj5u.com熱心網友回復:
要實作您正在尋找的效果,您必須增加迭代器。您可能會將其視為增加指標,而不是增加指標處的值:
iterator = iter(range(123))
for i in iterator:
print(i)
next(iterator, None) #None here is a default,
#and stops you getting an error if there is no 'next'.
想象一下,python 中的 for 回圈正在執行以下操作,這使得分配給i回圈體內的值丟失的原因非常明顯。i當你真的想增加時,你正在增加n
iterator = list(range(10))
n = 0
while n < len(iterator):
n =1
i = iterator[n]
print(i)
i = i 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/385479.html
上一篇:手把手帶你進行Nginx實體配置
