比较嵌套列表中的值
Comparing values in nested list
我查了一下,找不到最简单的答案。
我在 python 中有一个嵌套的项目列表。
[['screens\achieve.png', 378, 40, 194, 198, 234],
['screens\test.png', 378, 40, 1, 8, 15],
['screens\cutout.png', 378, 40, 4, 8, 14],
['screens\sample.png', 378, 40, 1, 6, 12]]
这些是图像的像素颜色,列表中有大约 60 张图像,这是其中的一部分。
图像名称、x 坐标、y 坐标、红色、绿色、蓝色值
我的工具所做的是显示图像。我单击图像中的一个位置,它循环遍历充满图像的文件夹,并输出我在查看图像中单击的位置的颜色值。
现在我要做的是查看颜色值列表,看看列表中是否有任何其他图像在同一位置具有相同的颜色。
我知道我正在查看记录。从上面的代码片段中,假设我正在查看列表中的 test.png (item[1])。我需要遍历列表中的其他项目,看看我在 test.png 中单击的位置在颜色上是否与任何其他项目不同。
提前致谢。
如果我没理解错的话,您想检查特定索引处的图像颜色与所有其他图像的颜色:
lst = [
["screens\achieve.png", 378, 40, 194, 198, 234],
["screens\test.png", 378, 40, 1, 8, 15],
["screens\cutout.png", 378, 40, 4, 8, 14],
["screens\sample.png", 378, 40, 1, 6, 12],
]
def check(lst, test_idx):
*_, r, g, b = lst[test_idx]
return any(
(r, g, b) == (tr, tg, tb)
for i, (*_, tr, tg, tb) in enumerate(lst)
if i != test_idx
)
print(check(lst, 1))
打印:
False
如果列表是:
lst = [
["screens\achieve.png", 378, 40, 1, 8, 15],
["screens\test.png", 378, 40, 1, 8, 15],
]
然后:
print(check(lst, 1))
打印:
True
我查了一下,找不到最简单的答案。
我在 python 中有一个嵌套的项目列表。
[['screens\achieve.png', 378, 40, 194, 198, 234],
['screens\test.png', 378, 40, 1, 8, 15],
['screens\cutout.png', 378, 40, 4, 8, 14],
['screens\sample.png', 378, 40, 1, 6, 12]]
这些是图像的像素颜色,列表中有大约 60 张图像,这是其中的一部分。 图像名称、x 坐标、y 坐标、红色、绿色、蓝色值
我的工具所做的是显示图像。我单击图像中的一个位置,它循环遍历充满图像的文件夹,并输出我在查看图像中单击的位置的颜色值。
现在我要做的是查看颜色值列表,看看列表中是否有任何其他图像在同一位置具有相同的颜色。
我知道我正在查看记录。从上面的代码片段中,假设我正在查看列表中的 test.png (item[1])。我需要遍历列表中的其他项目,看看我在 test.png 中单击的位置在颜色上是否与任何其他项目不同。
提前致谢。
如果我没理解错的话,您想检查特定索引处的图像颜色与所有其他图像的颜色:
lst = [
["screens\achieve.png", 378, 40, 194, 198, 234],
["screens\test.png", 378, 40, 1, 8, 15],
["screens\cutout.png", 378, 40, 4, 8, 14],
["screens\sample.png", 378, 40, 1, 6, 12],
]
def check(lst, test_idx):
*_, r, g, b = lst[test_idx]
return any(
(r, g, b) == (tr, tg, tb)
for i, (*_, tr, tg, tb) in enumerate(lst)
if i != test_idx
)
print(check(lst, 1))
打印:
False
如果列表是:
lst = [
["screens\achieve.png", 378, 40, 1, 8, 15],
["screens\test.png", 378, 40, 1, 8, 15],
]
然后:
print(check(lst, 1))
打印:
True