我想i將回圈中的值更改為high一次,x = True但我不知道為什么每次回圈再次開始時,i更改的值i 不是high 1
這里的代碼:
def max_min(self, data, high, low):
list1 = []
list2 = []
x = False
c = 0
for i in range(c, len(data)):
print(f"i = {i}")
if i == low:
if high > low:
list1.append(data[i])
list2 = data[low 1:high]
x = True #once this condition is true
print(f"list2 = {list2}")
else:
list2 = data[low 1:]
print(f"list2 = {list2}")
else:
list1.append(data[i])
print(f"list1 = {list1}")
if x == True:
c = high
return list1, list2
更清晰:這是每次迭代的輸出,假設high = 6,for i in range(7):
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
而理想情況下應該是
i = 0
i = 1
i = 2
i = 3
# x = True, high = 6
i = 6 #high = 6
uj5u.com熱心網友回復:
我會提供三個建議:
- 更改
i,而不是c到high。 - 在回圈內部而不是外部更改它。
- 意識到無論如何它都不會作業,因為
for in無論您對回圈控制變數做什么,它都會將其恢復到下一個專案:-)
如果您嘗試運行,您將看到最后一點:
for i in range(10):
print(i)
i = 9999
0..9盡管i回圈內部發生了變化,它仍會列印。如果您想要一個允許您的更改保持的回圈,這for in不是您要找的。嘗試使用while回圈,例如:
i = 0
while i < len(data):
# Weave your magic here, including changing i to
# whatever you want.
i = 1
# Carry on ...
uj5u.com熱心網友回復:
為了能夠積極影響回圈,您需要一個while回圈。如果您i在for回圈中的某個點手動設定,它將在下一次迭代開始時自動重置為行中的下一個值。例如:
for i in range(10):
if i == 3:
i = 100
print(i)
while但是,在回圈中,您可以更改迭代變數/條件:
i = 0
while i < 10:
i = 1
if i == 3:
i = 100
print(i)
翻譯到你的情況,我想這就是你最終的結果:
def max_min(data, high, low):
list1 = []
list2 = []
x = False
i = 0
while i < len(data):
print(f"i = {i}")
if i == low:
if high > low:
list1.append(data[i])
list2 = data[low 1:high]
x = True # once this condition is true
print(f"list2 = {list2}")
else:
list2 = data[low 1:]
print(f"list2 = {list2}")
else:
list1.append(data[i])
print(f"list1 = {list1}")
if x is True:
i = high
x = False
else:
i = 1
return list1, list2
max_min([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 6, 3)
uj5u.com熱心網友回復:
for i in range(7):是i in [0,1,2,3,4,5,6]固定的。無論您在回圈中更改 i 值多少次,在下一次迭代中它都會遵循序列[0,1,2,3,4,5,6]。
此外,您的 ifx == True:似乎通過縮進在 for 回圈之外。
嘗試while回圈
i = c
while i<len(data):
....
if x == True:
i = high
else:
i = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332697.html
