我正在尝试制作 5 个数字组合,但不重复相同的数字。我的数字是从 1 到 45,我想看看它们可以有多种组合。
到目前为止,我已经能够打印并保存组合。但从数据中我可以看到有很多重复值。
例如:(34,34,34,35,37)
我想做的基本上是让每个数字不重复自己,就像如果它是 34 那么它不能再次进入 5 的组合集合
`
from itertools import combinations_with_replacement
import sys
#get all combinations of 1, 2, nad length 10
c= combinations_with_replacement([1, 2, 3, 4, 5, 6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45], 5)
print(sys.getsizeof(c))
print(c)
res = str(''.join(map(str,c)))
file= open("sample.txt","w")
file.write(res)
file.close()
print(res)
`
以下代码将打印出所有组合,每行一个。
import itertools
numbers = range(1, 46) # Set of numbers to choose from (1 to 45)
combinations = itertools.combinations(numbers, 5) # Generate all combinations of 5 numbers
for combination in combinations:
print(combination)
如果你简单地使用以下内容,你将不会有重复元素的组合:
import itertools
my_list = range(45)
my_iters = list(itertools.combinations(my_list, 5))
您可以简单地通过将 my_iters 的每个元素的长度与后续集合的长度进行比较来检查情况:
my_iters_unique = [x for x in my_iters if len(set(x)) == len(x)]
你会看到 my_iters_unique 和 my_iters 的长度是相同的。