как сравнить левый и правый соседние элементы в списке - PullRequest
0 голосов
/ 03 июля 2019

Я хочу запрограммировать простую версию игры жизни Конвея с одномерным списком.как я могу сравнить каждый соседний элемент в списке?

например, первое правило будет, если левый и правый сосед элемента (1) также равен 1, тогда его следует изменить на 0

list = [0 , 1, 1, 1, 0, 1]

# after implementation
# [0 , 1, 0, 1, 0, 1]

Ответы [ 3 ]

0 голосов
/ 03 июля 2019

Можете ли вы быть более конкретным.Насколько я понял, я думаю, что это поможет вам.

list1 = [0 , 1, 1, 1, 0, 1]
for i in range(len(list1)):
    if list1[i]==1:
        if i!=(len(list1)-1) and list1[i+1]==list1[i-1]==1:
            list1[i]=0
            i=0
print(list1)
0 голосов
/ 03 июля 2019

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

list1 = [0 , 1, 1, 1, 0, 1]
new_list = []

for i in range(0, len(list1)):
    if i == 0 or i == len(list1):
        new_list.append(list1[i])
    else:
        if list1[i-1] == 1 and list1[i+1] == 1 and list1[i] == 1:
            new_list.append(0)
        else:
            new_list.append(list1[i])

Это new_list даст вам желаемый результат [0 , 1, 0, 1, 0, 1]. Надеюсь, это поможет.

0 голосов
/ 03 июля 2019

Знаете ли вы len () , range () и как получить доступ к элементу в списке?Вы можете использовать эти три ссылки для изменения списка ввода в соответствии с вашими потребностями.

Если вы не хотите изменять ввод, вы можете «скопировать» список, просто используя эту функцию: copy = list(original).Другое, более продвинутое решение будет использовать генераторы .

И не вызывать ваши переменные, такие как встроенные функции или типы.Если вы это сделаете, упомянутый list () больше не будет (легко) доступен.

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