![](/img/trans.png)
[英]Python: Combine for loop in while loop and iterate rows in a data
[英]python combine 'while loop' with 'for loop' to iterate through some data
我是python的新手,并且对编程还是一个新手。 我正在尝试将“ while循环”与“ for循环”结合起来以遍历某些列表,但是我遇到了无限循环。 这是代码
l=[0,2,3,4]
lo=0
for i in range(len(l)):
while (True):
lo+=1
if lo+l[i]>40:
break
print(lo)
与此代码类似,当条件'lo + 1 [i]大于40时,我得到了相同的无限循环,我希望输出停止循环并给出最终的'lo'输出或结果。 我尝试了每一种压痕打印线的方法,但无法获得我想要的。 请对此代码发表评论。 提前致谢。
您会遇到无限循环,因为您编写了无限循环。 您可能已经想到, break
语句将以某种方式“神奇地”知道您不希望仅结束for循环,也不想结束while循环。 但是break
只会打破一个循环-最里面的循环。 因此,这意味着您的代码实际上是这样做的:
while (True): # <- infinite while loop
lo += 1
for i in range(len(l)): # <- for loop
if not l[i] < 3:
break # <- break the for loop
print(lo)
# while loop continues
如果要结束两个循环,则必须显式地执行它-例如,可以使用布尔变量:
keep_running = True
while (keep_running):
lo += 1
for i in range(len(l)):
if not l[i] < 3:
# this will effectively
# stop the while loop:
keep_running = False
break
print(lo)
你的休息取消了内循环
这将工作:
l=[0,1,2,3,4]
stop = False
lo=0
while( not stop):
lo+=1
for i in range(len(l)):
if not l[i]<3:
stop = True
break
print(lo)
试试这个:
l=[0,1,2,3,4]
lo=0
for i in l:
lo+=1
if not l[i]<3:
break
print(lo)
您不需要外部无限循环,也不必自己管理索引(请参阅文档中的枚举 )。
l = [0,1,2,3,4]
for index, value in enumerate(l):
if value >= 3:
break
print(index)
为了提高可读性,我将条件设置为if value not < 3:
if value >= 3:
:。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.