📜  Python|使用带有元组的 Set 打印给定布尔矩阵中的唯一行

📅  最后修改于: 2022-05-13 01:55:00.403000             🧑  作者: Mango

Python|使用带有元组的 Set 打印给定布尔矩阵中的唯一行

给定一个二进制矩阵,打印给定矩阵的所有唯一行。行打印的顺序无关紧要。

例子:

Input:
    mat = [[0, 1, 0, 0, 1],
             [1, 0, 1, 1, 0],
             [0, 1, 0, 0, 1],
             [1, 1, 1, 0, 0]]
Output:
          (1, 1, 1, 0, 0)
          (0, 1, 0, 0, 1)
          (1, 0, 1, 1, 0)

我们有针对此问题的现有解决方案,请参阅链接。我们可以使用 Set 数据结构在Python中快速解决这个问题。方法很简单。

  1. 我们得到布尔值列表,将所有行(列表)放入集合中,因为集合包含唯一值。
  2. 由于 list 是 set 的不可散列类型,因为它是可变的,这就是为什么我们首先将每一行(列表)转换为元组,然后将所有元组放入 set。
  3. 结果集将仅包含唯一值元组(行)。
# Python program to Print unique rows in a 
# given boolean matrix using Set with tuples
  
# Function to print unique rows in a given boolean matrix
  
def uniqueRows(input):
  
    # convert each row (list) into tuple
    # we are mapping tuple function on each row of 
    # input matrix
    input = map(tuple, input)
  
    # put all rows in set
    result = set(input)
  
    # print all unique rows
    for row in list(result):
        print (row)
  
# Driver program
if __name__ == "__main__":
    input = [[0, 1, 0, 0, 1],
             [1, 0, 1, 1, 0],
             [0, 1, 0, 0, 1],
             [1, 1, 1, 0, 0]]
    uniqueRows(input)

输出:

(1, 1, 1, 0, 0)
(0, 1, 0, 0, 1)
(1, 0, 1, 1, 0)