Как напечатать все комбинации чисел из определенного набора чисел? - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь получить каждую комбинацию чисел из списка чисел.

В настоящее время я могу легко получить это как диапазон, и я получаю каждую нужную комбинацию чисел в наборе из 5 чисел (напечатанных в 5 отдельных столбцах). Что я не могу понять, как это сделать, так это как получить каждую комбинацию чисел из очень определенного списка чисел, который печатает этот точно такой же формат из существующего кода.

Ниже приведено то, что я имею в качестве кода длянайти числа в диапазоне, и это хорошо работает:

for range_numbers in combinations(list(range(1,20)), 5): #This gives me every 5 number combination without repeating numbers.
    for nums in combinations(list(range(1,10)), 1): #this adds every combination of this range without repeating numbers, in a single column.
        combined = range_numbers + nums
        file_writer.writerow(combined)
        count += 1

Я хочу получить точно такие же результаты, но из списка конкретных чисел, таких как [2,3,5,7,9, 12,13,15,19] для 5 комбинаций чисел и [3,7,8,10] для 1 комбинации чисел.

Любая помощь приветствуется, я потратил последнюю8 часов гуглил и пытался выяснить это, кажется, что это должно быть легко, но мой мозг просто кашляет ..

1 Ответ

0 голосов
/ 17 октября 2019

Это прямая замена операндов:

from itertools import combinations, product
large = [2,3,5,7,9,12,13,15,19]
small = [3,7,8,10]

for range_numbers in combinations(large, 5):
    for nums in combinations(small, 1):
        ...

Возможно, лучше использовать product, чтобы сделать это в одном цикле, как предполагал Гвидо:

for combined in product( [list(combinations(large, 5)),
                          list(combinations(small, 1))] ):
...