📜  Python – 将相似的元素分组到矩阵中

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

Python – 将相似的元素分组到矩阵中

有时,在使用Python Matrix 时,我们可能会遇到一个问题,即我们需要对所有相同的元素进行分组。这类问题可以在数据域中应用。让我们讨论可以执行此任务的某些方式。

方法 #1:使用列表理解 + groupby()
上述功能的组合为这个问题提供了可能的解决方案。在此,我们使用 groupby() 执行分组任务,列表理解有助于迭代。

# Python3 code to demonstrate working of 
# Group similar elements into Matrix
# Using list comprehension + groupby()
from itertools import groupby
  
# initializing list
test_list = [1, 3, 5, 1, 3, 2, 5, 4, 2]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Group similar elements into Matrix
# Using list comprehension + groupby()
res = [list(val) for key, val in groupby(sorted(test_list))]  
          
# printing result 
print("Matrix after grouping : " + str(res))
输出 :
The original list : [1, 3, 5, 1, 3, 2, 5, 4, 2]
Matrix after grouping : [[1, 1], [2, 2], [3, 3], [4], [5, 5]]

方法 #2:使用列表理解 + Counter()
这是解决这个问题的另一种方法。在此,我们使用 Counter() 获取值及其频率,然后使用列表推导将每个元素与频率相乘以获得重复项

# Python3 code to demonstrate working of 
# Group similar elements into Matrix
# Using list comprehension + Counter()
from collections import Counter
  
# initializing list
test_list = [1, 3, 5, 1, 3, 2, 5, 4, 2]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Group similar elements into Matrix
# Using list comprehension + Counter()
temp = Counter(test_list)
res = [[key] * val for key, val in temp.items()]
  
# printing result 
print("Matrix after grouping : " + str(res))
输出 :
The original list : [1, 3, 5, 1, 3, 2, 5, 4, 2]
Matrix after grouping : [[1, 1], [2, 2], [3, 3], [4], [5, 5]]