如何检查嵌套列表中的所有数字是否都等于 n

How to check if all numbers in a nested list are equal to n

所以我想在另一个黑白图像中编码一个秘密图像。 该图像必须与我们试图在其中隐藏秘密图像的原始图像具有相同的大小,因此我们有两个图像的像素对应关系。

要对秘密图像进行编码:

如果秘密图像中的像素是白色的(因此,RGB 值为 [255, 255, 255]),则将蓝色分量(最后一个数字)加 1。

否则,离开 蓝色组件未受影响。

所以基本上彩色图像是通过使用原始图像中改变的蓝色分量隐藏在黑白图像中的。

通过反转编码过程来解码黑白图像。

假设我目前有以下像素列表:

P = [[0, 0, 0], [255, 255, 255], [255, 184, 254], [255, 0, 254]]

假设两张图片的宽高相同

我如何检查 P 中的 'pixel' 是否等于 255?所以这意味着 'pixel' 中的所有 3 个数字都必须等于 255.

您可以使用

for idx,lst in enumerate(P):
    if lst==[255,255,255]:
       print(idx,lst)

enc_P=[] 
for lst in P:
    if lst==[255,255,255]:
       print(lst)
    enc_P.append(lst)

这是检查内部列表中的所有值是否都等于 255 的方法,它将 return P:

中内部列表的索引
P = [[0, 0, 0], [255, 255, 255], [255, 184, 254], [255, 0, 254]]
def checker(P):
    for subP in P:
        if subP[1:] == subP[:-1] and subP[0] == 255:
            return subP, P.index(subP)


checker(P)
基于

numpy 的方法是最快的。

使用 numpy 你可以这样做:

>>> import numpy as np
>>> P = np.array(P)
>>> np.all((P == 255), axis=1)
array([False,  True, False, False])
P = [[0, 0, 0], [255, 255, 255], [255, 184, 254], [255, 0, 254]]

count = 0
for i in range(len(P)):
    for j in range(len(P[i])):
        if P[i][j] == 255:
            count += 1
    if count == 3:
        print(i)
    count = 0

这样您就可以在二维列表中找到包含特定值的所有索引。

上面的代码打印 1 因为索引 1 中只有 P 包含列表 [255, 255, 255]