2016-02-27 4 views
1

Я хотел бы сделать цикл, чтобы взять число, сравнить со следующим числом, и если условие истинно, замените это число на следующее число и сравните этот номер со следующим пока это число не будет больше соответствовать условию. Я пробовал этот код, но цикл не работает.Сравнение последовательности чисел в списке python

list = [9,4,3,1,8,10,4,3,2] 

for i,item in enumerate(list): 
     p = item 
     while p > list[i+1]: 
       p = list[i+1]    

     else: 
       print(p) 
+3

Что вы ожидаемый результат для этого списка? –

+0

Я хочу, чтобы вывести число: 1 и 2. (минимальная точка в волне) – user5960525

+0

@ user5960525 Пожалуйста, добавьте дополнительную информацию (о ожидаемом выходе) в свой вопрос (не в комментарии)! http://stackoverflow.com/posts/35664948/edit – jogo

ответ

3

Вы можете найти локальные минимумы (Я хочу вывести номер: 1 и 2. (минимальная точка в волне)) для вашего списка:

>>> data = [9, 4, 3, 1, 8, 10, 4, 3, 2] 

путем добавления бесконечности как к концу, так что первый и последний элемент также будет найден как минимум:

>>> padded = [float('inf')] + data + [float('inf')] 

и сравнения значения с одного до его левая и его права:

>>> [v2 for v1, v2, v3 in zip(padded[:-2], padded[1:-1], padded[2:]) if v1 > v2 < v3] 
[1, 2] 
0
list = [9,4,3,1,8,10,4,3,2] 

list.append(float('Inf')) 
for i,item in enumerate(list[:-1]): 
    if i == 0: 
     # skip this one, but make i count from 0 
     continue 

    if list[i-1] > item < list[i+1]: 
     print(item)