#python
Вопрос:
Я просто ищу идеи, с помощью которых я мог бы осуществить такое действие или название «Google» или изучить такие идеи.
Учитывая набор массивов
a = [10,5,3,6]
Моя цель-минус 3 от a и добавить обратно к a[1], a[2] и a[3] соответственно.
Пример
a = [10,5,3,6] New Result: a = [7,8,3,6] a = [7,5,6,6] a = [7,5,3,9] a = [7,6,5,6] a = [7,6,4,7]
И так далее, какой тип реализации я могу осуществить? Этот пример предназначен только для[0] и -3, моя конечная цель-реализовать в[1],a[2],a[3] и переменную минус — минус 3 из a[1], a[2] и a[3] и добавить обратно в другое.
Комментарии:
1. как вы получаете последние 2 списка в примере, т. е.
a = [7,6,5,6]
иa = [7,6,4,7]
. Также вам нужны промежуточные результаты или только окончательные[7, 5, 3, 9]
2. Минус -3 от[0], добавьте 1 к[1], добавьте 2 к[2], добавьте 0 к[3] Минус -3 от[0], добавьте 1 к[1], добавьте 1 к[2], добавьте 1 к[3], моя цель-найти всю комбинацию, из которой я могу минус -3, и добавить к другому элементу в списке
3. Я с нетерпением жду чего-то, чтобы получить ВСЮ комбинацию, которую я могу -3 из[0] и добавить обратно в[1], [2] и[3] соответственно
Ответ №1:
import itertools def my_combinations(my_list, k): for item in itertools.product(range(k 1), repeat=len(my_list) - 1): if sum(item) == k: yield item, [my_list[0] - k] [n i for n, i in zip(my_list[1:], item)] spam = [10, 5, 3, 6] for item, lst in my_combinations(spam, 3): print(f'{item} --gt; {lst}')
выход:
(0, 0, 3) --gt; [7, 5, 3, 9] (0, 1, 2) --gt; [7, 5, 4, 8] (0, 2, 1) --gt; [7, 5, 5, 7] (0, 3, 0) --gt; [7, 5, 6, 6] (1, 0, 2) --gt; [7, 6, 3, 8] (1, 1, 1) --gt; [7, 6, 4, 7] (1, 2, 0) --gt; [7, 6, 5, 6] (2, 0, 1) --gt; [7, 7, 3, 7] (2, 1, 0) --gt; [7, 7, 4, 6] (3, 0, 0) --gt; [7, 8, 3, 6]
Ответ №2:
Я думаю, что это то решение, которое вы ищете:
a = [10,5,3,6] k = 3 for i in range(len(a)-1): a[i] -= k a[i 1] = k print(a)
Выход:
[7, 5, 3, 9]