2d列表的{break}语句

时间:2018-05-18 19:29:50

标签: python-3.x list break

我是Python新手,负责从列表中提取图像和标签。我有一个图像数据库(红色,绿色,蓝色,黄色等)。图像位于第一列,而相应的标签(红色,绿色,蓝色等位于第二列)。我正在尝试编写一个代码,让我们说我想要遍历循环并提取第一个黄色图像并突破程序。现在的代码突破了if循环,但一直持续到结束并更新i值并提取错误的图像。我尝试将多个break语句以及break语句放在不同的位置,但它似乎不适合我。有人能指出我正确的方向吗?

rows = len(IMAGE_LIST)
columns = len(IMAGE_LIST)
   for i in range(rows):
      for j in range(columns):
         if IMAGE_LIST[j][1] == "Yellow":

         sel_image = IMAGE_LIST[j][0]

         sel_label = IMAGE_LIST[j][1]

        break

 print(j)

 plt.imshow(IMAGE_LIST[j][0])

 print(IMAGE_LIST[j][1]) 

1 个答案:

答案 0 :(得分:0)

假设您的2d列表具有OP中指定的结构[['image1.png', 'blue'], ['image2.jpeg', 'yellow'], ...],您不需要嵌套的for循环结构。一旦找到具有所需颜色的图像,程序就会中断,并且将使用for循环中初始化的全局i变量设置名称和颜色。如果这样做或者您的数据结构比这更复杂,请告诉我。

rows = len(IMAGE_LIST)
# columns = len(IMAGE_LIST) # not needed given my assumptions
for i in range(rows):
  if IMAGE_LIST[i][1].lower() == "yellow": # ignore casing to deal with possible user labeling errors
    break # index i will stay in scope
sel_image, sel_label = IMAGE_LIST[i] # unpacks the current row into variables

print('index', i)
print('color', sel_label)

plt.imshow(sel_image)