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]]