我是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])
答案 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)