Python - 所有可能的唯一 K 大小组合,直到 N
有时,在使用Python域时,我们可能会遇到需要生成各种元素组合的问题。这可以是 K 大小的唯一组合,直到 N。这个问题可以应用于数据域和学校编程。让我们讨论可以执行此任务的某些方式。
Input : N = 2, K = 3
Output : [(0, 0, 0), (0, 0, 1), (0, 1, 1), (1, 1, 1)]
Input : N = 4, K = 2
Output : [(0, 0), (0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)]
方法 #1:使用product() + setdefault()
+ loop
上述功能的组合提供了解决此问题的方法。在此,我们使用 product 执行所有组合并使用 setdefault() 消除重复项,并通过蛮力方法循环。
# Python3 code to demonstrate working of
# All Possible unique K size combinations till N
# Using product() + setdefault() + loop
from itertools import product
# initializing N
N = 4
# Initialize K
K = 3
# All Possible unique K size combinations till N
# Using product() + setdefault() + loop
temp = list(product(range(N), repeat = K))
res = {}
for tup in temp:
key = tuple(sorted(tup))
res.setdefault(key, []).append(tup)
res = list(res.keys())
# printing result
print("The unique combinations : " + str(res))
The unique combinations : [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 2), (0, 2, 3), (0, 3, 3), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 2), (1, 2, 3), (1, 3, 3), (2, 2, 2), (2, 2, 3), (2, 3, 3), (3, 3, 3)]
方法#2:使用combinations_with_replacement()
这提供了解决此问题的替代方法。此函数在内部执行,这是解决问题所需的一切。
# Python3 code to demonstrate working of
# All Possible unique K size combinations till N
# Using combinations_with_replacement()
from itertools import product, combinations_with_replacement
# initializing N
N = 4
# Initialize K
K = 3
# All Possible unique K size combinations till N
# Using combinations_with_replacement()
res = list(combinations_with_replacement(range(N), K))
# printing result
print("The unique combinations : " + str(res))
The unique combinations : [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 2), (0, 2, 3), (0, 3, 3), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 2), (1, 2, 3), (1, 3, 3), (2, 2, 2), (2, 2, 3), (2, 3, 3), (3, 3, 3)]