尝试获得没有重复数字的所有组合



我试图使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)

欢迎来到stackoverflow。如果您只使用以下代码,就不会有重复元素的组合:

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_uniquemy_iters的长度是一样的

最新更新