📜  Python – 从元组矩阵中删除相似行

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

Python – 从元组矩阵中删除相似行

有时,在使用元组矩阵时,我们可能会遇到一个问题,即我们会得到很多相似的数据,即行中的元素相同,只是元组的顺序不同,有时希望将它们删除。这类问题可以应用在 Web 开发和日常编程等领域。让我们讨论可以执行此任务的某些方式。

方法 #1:使用set() + tuple() + sorted() + 列表理解
上述功能的组合可以用来解决这个问题。在此,我们首先执行排序,然后将行转换为设置,这会自动删除重复项。

# Python3 code to demonstrate working of 
# Remove Similar Rows from Tuple Matrix
# Using set() + tuple() + sorted() + list comprehension
  
# initializing lists
test_list = [[(4, 5), (3, 2)], [(2, 2), (4, 6)], [(3, 2), (4, 5)]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Remove Similar Rows from Tuple Matrix
# Using set() + tuple() + sorted() + list comprehension
res = set([tuple(set(sub)) for sub in test_list])
  
# printing result 
print("Tuple matrix after removal : " + str(res))
输出 :
The original list is : [[(4, 5), (3, 2)], [(2, 2), (4, 6)], [(3, 2), (4, 5)]]
Tuple matrix after removal : {((4, 6), (2, 2)), ((4, 5), (3, 2))}

方法 #2:使用set() + frozenset() + 生成器表达式
上述功能的组合可以用来解决这个问题。在此,我们使用frozenset() 执行排序和元组转换的任务。

# Python3 code to demonstrate working of 
# Remove Similar Rows from Tuple Matrix
# Using set() + frozenset() + generator expression
  
# initializing lists
test_list = [[(4, 5), (3, 2)], [(2, 2), (4, 6)], [(3, 2), (4, 5)]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Remove Similar Rows from Tuple Matrix
# Using set() + frozenset() + generator expression
res = set([frozenset(sub) for sub in test_list])
  
# printing result 
print("Tuple matrix after removal : " + str(res))
输出 :
The original list is : [[(4, 5), (3, 2)], [(2, 2), (4, 6)], [(3, 2), (4, 5)]]
Tuple matrix after removal : {frozenset({(4, 5), (3, 2)}), frozenset({(4, 6), (2, 2)})}