Проверка цикла в Python - PullRequest
0 голосов
/ 05 июня 2018

У меня есть вопрос о петлях.Представьте, что у вас есть этот массив данных:

list = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]

Как бы вы написали цикл, который проверяет, меньше ли предыдущее число, а следующее - после проверенного (Условие выглядит следующим образом [5,6,5]).Таким образом, цикл дойдет до номера 9 и напечатает его или сохранит, что угодно.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы можете просто написать простой цикл, который проверяет, что предыдущий номер меньше текущего номера, а следующий номер равен предыдущему:

lst = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]

for i in range(len(lst)):
    if lst[i-1] < lst[i] and lst[i-1] == lst[i+1]:
        print(lst[i])

# 9
0 голосов
/ 05 июня 2018

Использование next с выражением генератора:

lst = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]

res = next(j for i, j, k in zip(lst, lst[1:], lst[2:]) if i < j and i == k)

Если вам нужны все такие числа, используйте вместо этого понимание списка:

res = [j for i, j, k in zip(lst, lst[1:], lst[2:]) if i < j and i == k]

Если вам нужно условие, которое будетпоказать все числа, которые выше, чем их предыдущие и следующие:

lst = [1,2,3,4,3,2,3,1,2,1,2,3,4,5,6,7,8,6]

res = [j for i, j, k in zip(lst, lst[1:], lst[2:]) if i < j > k]

[4, 3, 2, 8].

Пояснение

  • Вы можете перебрать список со сдвинутыми версиями самого себя с помощью zip.
  • Для каждого триплета проверьте два условия.
  • Используйте next для извлечения таких триплетов;если такого триплета не существует, вы встретите ошибку StopIteration.
  • Никогда не называйте переменную после встроенной, например, используйте lst вместо list.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...