2016-11-08 1 views
-1

Если бы я получил, как 10, 50, 100, 120, 140, 160, 100, 50 этот код:Reset питон итератора, когда я получаю значение

mock_len = len(db) 
 
epsilon = 20 
 
max_data = 0 
 
for i in range(mock_len - 1): 
 
    if db[i+1][0]-db[i][0] == 20: 
 
     max_data = db[i+1] 
 

 
     print max_data

напечатает 120,140,160, но Я хочу только напечатать 1 значение, в моем случае 120, как мне сбросить до 0 max_data var, когда я получу значение, чтобы сравнить сравнение в цикле.

Предположим, что я добираюсь до 120, получаю начальный var от 120 до max_data, сбрасывает max_data в 0 и продолжает сравнивать. У меня есть больший список данных, где я хочу только 1 значение, когда сталкиваюсь с 20 diff.

+0

Сначала я подумал, что просто переместите 'print max_data' в начало строки (т. Е. Удалите отступ) ... Но потом я понял, что ваш вопрос был таким же ясным, как модный день в Нью-Дели! !! –

+0

Мне очень непонятно, что именно вы спрашиваете и в чем проблема. Но похоже, что это должно быть легко объяснимо. –

+0

Просьба сообщить нам, что такое 'db'? – Humbalan

ответ

0

Как я уже сказал в комментариях, ваше задание очень неясно. Но ниже моя попытка сперва.

db = [10, 50, 100, 120, 140, 160, 100, 50] 
g = [db[i] for i, _ in enumerate(db) if db[i]-db[i-1] == 20] 
print(g)  # [120, 140, 160] :prints all instances where the difference is 20 
print(g[0]) #   120 :prints the first instance where the difference is 20 

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

Смежные вопросы