Заданный размер массива четыре, минус от элемента 0 и плюс к элементу 1, 2 и 3

#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]