【问题标题】:How to check if all numbers in a nested list are equal to n如何检查嵌套列表中的所有数字是否等于 n
【发布时间】:2020-03-26 02:54:19
【问题描述】:

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

对秘密图像进行编码:

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

否则,请离开 蓝色组件未触及。

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

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

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

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

假设两张图片的宽高相同。

如何检查 P 中的任何“像素”是否等于 255?所以这意味着“像素”中的所有 3 个数字都必须等于 255。

【问题讨论】:

  • 要检查是否有任何像素为255 255 255,您只需使用in[255, 255, 255] in P,其计算结果为True。
  • 你使用的是列表还是 numpy 数组?

标签: python python-3.x list rgb mutation


【解决方案1】:
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]

【讨论】:

    【解决方案2】:

    你可以使用

    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)
    

    【讨论】:

    • 如果不使用 enumerate 进行迭代,我该怎么做?
    • 如果您不想要P 中像素的index,我认为您需要它。您可以直接使用它而无需枚举。如果您仍然需要索引,那么您可以创建另一个列表 enc_P=[] 然后在修改像素后迭代 P 并附加 lst 到 enc_P。希望有意义
    【解决方案3】:

    numpy 基于方法将是最快的。

    使用numpy 你可以这样做:

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

    【讨论】:

      【解决方案4】:

      这是检查内部列表中的所有值是否等于 255 的方法,它将返回 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)
      

      【讨论】:

        猜你喜欢
        • 2016-02-16
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-12
        • 1970-01-01
        • 1970-01-01
        • 2020-08-04
        相关资源
        最近更新 更多