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

问题描述 投票:0回答:2

我正在尝试制作 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)

`

python python-3.x duplicates combinations python-itertools
2个回答
0
投票

以下代码将打印出所有组合,每行一个。

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)

0
投票

如果你简单地使用以下内容,你将不会有重复元素的组合:

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 的长度是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.