Номер запаса в списке - PullRequest
       1

Номер запаса в списке

0 голосов
/ 06 апреля 2020

Я сделал код, который дает мне все комбинации сложения между числами. Например, у меня есть список из 6 чисел, и у меня есть функция, которая выдает мне все возможные результаты от числа до полученного моего окончательного числа.

Вот пример:


my final number : 15

My list:[2,4,6,7,9,11]


And to get 15 I have  4+11=15   or  9+6=15

Но мне бы хотелось, чтобы я мог сохранить свой первый результат, чтобы использовать его позже.

Например:

My list=[2,4,6,7,9,11]

My final number : 30

And to get 30, I got with my function  9+11+6+4=30

But I would  like to know How I can for example have this :

9+11=20
6+4=10
20+10=30

Here I stock 2 results and I add them together to get 30.

Поэтому я хотел бы знать, как я могу сохранить результат сложения, чтобы добавить их вместе после .

Спасибо !!!

1 Ответ

1 голос
/ 06 апреля 2020

Посмотрите на itertools.combinsk . Я не скажу, что это оптимизированное решение, но оно даст вам правильный ответ.

Попробуйте:

import itertools

li = [2,4,6,7,9,11]

def get_subset(li, total):
    for r in range(1, len(li) + 1):
        for sub in itertools.combinations(li, r):
            if sum(sub) == total:
                return sub

print(get_subset(li, 30))
print(get_subset(li, 15))

Вывод:

(4, 6, 9, 11)
(4, 11)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...