📜  Python| K分区分组

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

Python| K分区分组

有时,我们会遇到需要处理元素分组的问题。在使用数据库时,这些分组相对容易,但使用语言时,这可能会很棘手。让我们讨论一些在Python中按 K 进行分组的方法。

方法#1:使用循环
这是执行此特定任务的蛮力方法。在这种情况下,我们使用循环来获得每个数字的 K 位置并将该数字添加到指定列表中。

# Python3 code to demonstrate
# K Division Grouping
# using loops
  
# initializing list
test_list = [3, 12, 13, 22, 25, 30]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing K 
K = 7
  
# using loops
# K Division Grouping
res = []
dec = -1
for num in sorted(test_list):
    while num // K != dec:
        res.append([])
        dec += 1
    res[-1].append(num)
  
# print result
print("The list after grouping by K is : " + str(res))
输出 :
The original list : [3, 12, 13, 22, 25, 30]
The list after grouping by K is : [[3], [12, 13], [], [22, 25], [30]]

方法 #2:使用列表理解 + max() + min()
另一种以缩短方式执行此特定任务的方法是使用列表推导。 min 和 max函数指定作为内部列表所需的列表数量,其余任务在列表推导内执行。

# Python3 code to demonstrate
# K Division Grouping
# using list comprehension + min() + max()
  
# initializing list
test_list = [3, 12, 13, 22, 25, 30]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing K 
K = 7
  
# using list comprehension + min() + max()
# K Division Grouping
temp = sorted(test_list)
res = [[ele for ele in temp if ele // K == sub] for sub in range(min(test_list) // K, (max(test_list) // K) + 1)]
  
# print result
print("The list after grouping by K is : " + str(res))
输出 :
The original list : [3, 12, 13, 22, 25, 30]
The list after grouping by K is : [[3], [12, 13], [], [22, 25], [30]]