![](/img/trans.png)
[英]I have a while loop that runs a function, how do I break out of the function after an if and return to the while loop?
[英]In Python, how do I restart a for loop within a while loop? The furthest out loop is a while loop that runs while r < y(length of integer list)
integer 列表本质上是一个随机的 integer 列表,其中大部分是 excel 文件中的整数,但我想识别一些零块。 前任。 [3,3,3,0,0,4,0,6,0,0,7]。 我只想遍历列表以便可以打印:第一个零块从索引 3 开始,到索引 4 结束,第二个块等。
该列表是 excel 中的单列,跨越数千行。
我这样做的方式是使用以下代码:
r = 1
while r+1000 < y:
for q in range(r,y-1):
if sheet.cell_value(q,3) == '0':
start = q
print(str(start))
for e in range(q,y-1):
if sheet.cell_value(e,3) != 0:
r = e
print(str(end))
break
break
打印件在那里,所以我可以检查它是否正确。 但是现在 output 中发生的事情是它永远不会停止并且只打印起始值。
您可以执行与此类似的操作来获取每组 0 的开始和结束位置的列表。
>>> li = [3,3,3,0,0,4,0,6,0,0,7]
>>> tracking_zeros = False
>>>
>>> for i, n in enumerate(li):
... if n == 0:
... if not tracking_zeros:
... print(f"start zeros: {i}")
... tracking_zeros = True
... else:
... if tracking_zeros:
... print(f" end zeros: {i}")
... tracking_zeros = False
...
start zeros: 3
end zeros: 5
start zeros: 6
end zeros: 7
start zeros: 8
end zeros: 10
不计算单个零:
>>> tracking_zeros = False
>>>
>>> for i, n in enumerate(li):
... if n == 0:
... if not tracking_zeros and li[i+1] == 0:
... print(f"start zeros: {i}")
... tracking_zeros = True
... else:
... if tracking_zeros:
... print(f" end zeros: {i}")
... tracking_zeros = False
...
start zeros: 3
end zeros: 5
start zeros: 8
end zeros: 10
如果列表中的最后一项是 0,则会引发索引错误,因此您可能需要考虑这一点。
在执行循环以防止这种情况发生之前,append 最后可以是一个非零值: li.append(1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.