Python заменяет каждое 3-е значение на сумму предыдущих 2 элементов, если она не равна - PullRequest
1 голос
/ 29 марта 2019

Данный список равен n = [3,1,5,9,6,14], замените 5 на 3 + 1 и 14 на 9 + 6.Вывод будет выглядеть как [3,1,4,9,6,15]

Мой подход заключался в использовании диапазона и присвоения значения i + [i + 1] == [i + 2]

Я пробовал 2 способа, но в обоих случаях я выхожу из привязанного исключения

#Approach 1
for idx,item in enumerate(n):
  if (idx + (idx+1))!=(idx+2):
      n[idx+2]=(idx + (idx+1))


#Approach2
for i in range(len(n)):
    if n[i]+n[i+1]!=n[i+2]:
        n[i + 2]==n[i]+n[i+1]
print(n) 

Даже выполнение len (n) -1 не решает проблему.Некоторые направления будут полезны.Спасибо.

1 Ответ

1 голос
/ 29 марта 2019

Вы можете использовать оператор мода (%) для проверки каждого третьего элемента:

items = [3, 1, 5, 9, 6, 14]

for i, item in enumerate(items):
    if ((i+1) % 3 == 0):
        items[i] = items[i-1] + items[i-2]

print(items)

Или, чтобы быть более эффективным, используйте range, как указано в комментариях:

for i in range(2, len(items), 3):
    items[i] = items[i-1] + items[i-2]

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