Python 如何结束嵌套循环?

Python 如何结束嵌套循环?,python,nested-loops,nearest-neighbor,Python,Nested Loops,Nearest Neighbor,我编写了一个脚本来在二进制图像中执行连接性搜索(数组的可能值为0和1)。对于每个像素,代码会查看有多少个相邻像素的强度为1,如果至少有5个相邻像素的强度为I=1,则会指定1作为所考虑像素的值。我希望代码重复这个过程,直到没有新的像素被指定为强度1。目前代码没有迭代执行连接性搜索;你对如何解决这个问题有什么建议吗 pixel_count = 0 pixel_counter = [0] * 100 for p in range(1, 100): if p < 3: co

我编写了一个脚本来在二进制图像中执行连接性搜索(数组的可能值为0和1)。对于每个像素,代码会查看有多少个相邻像素的强度为1,如果至少有5个相邻像素的强度为
I=1
,则会指定1作为所考虑像素的值。我希望代码重复这个过程,直到没有新的像素被指定为强度1。目前代码没有迭代执行连接性搜索;你对如何解决这个问题有什么建议吗

pixel_count = 0
pixel_counter = [0] * 100
for p in range(1, 100): 
    if p < 3:
       continue
    else:
        if pixel_counter[p-1] > pixel_counter[p-2]:
           continue
        else:
            break
        for q in range(1, ran_x-1):
            for r in range(1, ran_y-1):
                counter = 0
                if neighbours_mask_1[q,r] == 1:
                   counter = counter +1
                if neighbours_mask_2[q,r] == 1:
                   counter = counter +1
                if neighbours_mask_3[q,r] == 1:
                   counter = counter +1
                if neighbours_mask_4[q,r] == 1:
                   counter = counter +1
                if neighbours_mask_5[q,r] == 1:
                   counter = counter +1
                if neighbours_mask_6[q,r] == 1:
                   counter = counter +1
                if neighbours_mask_7[q,r] == 1:
                   counter = counter +1
                if neighbours_mask_8[q,r] == 1:
                   counter = counter +1    
                if counter > 5:
                   mask_1[q,r] = 1
                   pixel_count = pixel_count + 1
                   print pixel_count
                else:
                   mask_1[q,r] = 0
        pixel_counter[p] = pixel_count
像素计数=0
像素计数器=[0]*100
对于范围(1100)内的p:
如果p<3:
持续
其他:
如果像素计数器[p-1]>像素计数器[p-2]:
持续
其他:
打破
对于范围内的q(1,ran_x-1):
对于范围内的r(1,运行y-1):
计数器=0
如果邻居屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽
计数器=计数器+1
如果邻居屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽
计数器=计数器+1
如果邻居屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽
计数器=计数器+1
如果邻居屏蔽4[q,r]==1:
计数器=计数器+1
如果邻居屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽
计数器=计数器+1
如果邻居屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽
计数器=计数器+1
如果邻居屏蔽7[q,r]==1:
计数器=计数器+1
如果邻居屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽屏蔽
计数器=计数器+1
如果计数器>5:
掩码_1[q,r]=1
像素计数=像素计数+1
打印像素计数
其他:
掩码_1[q,r]=0
像素计数器[p]=像素计数

本节代码:

for p in range(1, 100):
    ...
        if pixel_counter[p-2] > pixel_counter[p-1]:
            continue
        else: 
            break
        ... dead code ...
将发出所有执行的声音,我标记为死代码的部分,其中包含您的计数器,因为它们不可访问,所以永远不会执行


我不太清楚您在那里想做什么。

这部分代码:

for p in range(1, 100):
    ...
        if pixel_counter[p-2] > pixel_counter[p-1]:
            continue
        else: 
            break
        ... dead code ...
将发出所有执行的声音,我标记为死代码的部分,其中包含您的计数器,因为它们不可访问,所以永远不会执行


我不太清楚您想在那里做什么。

回答标题中的问题:退出嵌套循环的最简单方法是将循环移动到函数中,然后从中返回。例如

def f():
    for i in range(10):
        for j in range(10):
            if i + j == 9: return

要回答标题中的问题:退出嵌套循环的最简单方法是将循环移动到函数中,然后从中返回。例如

def f():
    for i in range(10):
        for j in range(10):
            if i + j == 9: return

我的想法是重复“死代码”部分
p
次,如果条件
if pixel\u counter[p-2]>if pixel\u counter[p-1]
满足……那么为什么要将
continue
放在那里?你知道
continue
关键字的作用吗?很好。那是个错误。我现在将更正代码-可能错误与此有关。我的想法是重复“死代码”部分
p
次,如果条件
如果像素计数器[p-2]>像素计数器[p-1]
满足……那么为什么要将
继续
放在那里?你知道
continue
关键字的作用吗?很好。那是个错误。我现在将更正代码-可能错误与此有关我不确定您试图执行的操作,是否正确?“当整个网格没有填满1时,找到零,如果它们周围有5个1,则将其设置为1。重复,直到整个网格为1。”我的计划是:“当整个网格没有填满1时,找到零,如果它们周围有5个1,则将其设置为1。重复,直到不能再添加1。”我不确定你想做什么,这是正确的吗?“当整个网格没有填充1时,找到零,如果它们周围有5个1,则将其设置为1。重复,直到整个网格为1。”我的计划是:“当整个网格没有填充1时,找到零,如果它们周围有5个1,则将其设置为1。重复,直到不能再添加1。”