пытаясь изменить список условно на сумму предыдущих n записей - PullRequest
0 голосов
/ 24 июня 2019

По сути, у меня есть список 0 и 1, и я пытаюсь пройти через этот список, добавляя 1 к любому 1, где был 1 в предыдущих n записях и т. Д.

Что я надеюсьв конце список, который имеет 0, 1 и 2, где 2 - это 1, которые были изменены с использованием условия, что 1 появилось в предыдущих 10 записях.

Сначала я попытался написать ifцикл внутри цикла for (просматривая предыдущие 10 записей), но я не на 100% уверен, что мой синтаксис правильный ...

numbers = [0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,1,0,1,0,1,1]


for i in numbers[9:]:
  if i==1:
    if sum(numbers[i-9:i]) > 0:
      numbers[i] += 1


print(numbers)

В результате при печати списка я получаю именноте же цифры .. где я иду не так?

Ответы [ 3 ]

1 голос
/ 24 июня 2019

Это то, что вы ищете?

numbers = [0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,1,0,1,0,1,1]

for i in range(len(numbers[9:])):
  if numbers[i]==1:
    if sum(numbers[i-9:i]) > 0:
      numbers[i] += 1

print(numbers)

В вашем вопросе вы перебираете значения. Я изменил его, чтобы перебирать индексы с range и длиной вашего списка.

1 голос
/ 24 июня 2019

Существует разница между индексом элемента и его значением.Используйте enumerate, чтобы получить индекс и значение.

numbers = [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
           1, 0, 1, 0, 1, 0, 1, 1]

for index, number in enumerate(numbers[9:], start=9):
    if number == 1:
        if sum(numbers[index - 9:index]) > 0:
            numbers[index] += 1

print(numbers)
0 голосов
/ 24 июня 2019

Ваш код неверен по адресу:

# i here is not the index of your list, it is a value.
if sum(numbers[i-9:i]) > 0:
   numbers[i] += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...