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中快速解决这个问题。方法很简单。
- 我们得到布尔值列表,将所有行(列表)放入集合中,因为集合包含唯一值。
- 由于 list 是 set 的不可散列类型,因为它是可变的,这就是为什么我们首先将每一行(列表)转换为元组,然后将所有元组放入 set。
- 结果集将仅包含唯一值元组(行)。
# 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)