У меня есть кортеж входных целочисленных значений и значение high .Я хочу перебрать и вытащить пары первого экземпляра значения в кортеже> = high , а затем первого значения <<em> high .Пример может помочь:
Сохранять только первый максимум или первый минимум каждого повторяющегося максимума или минимума
Например, если max == 100, а вход равен ( 102 *)1012 *, 109, 120, 80 , 40, 30, 200 , 90 )
вывод должен быть [[102, 80], [200, 90]]
items = (102, 109, 120, 80, 40, 30, 200, 90)
high = 100
started = False # Used to ensure we start with high values first
currently_on_highs = True
first_val_high = True
first_val_low = True
transitions = []
inner_transition = []
for item in items:
if item >= high:
started = True
currently_on_highs = True
if first_val_high:
first_val_high = False
first_val_low = True
inner_transition.append(item)
else:
if started:
currently_on_highs = False
if first_val_low:
first_val_high = True
first_val_low = False
inner_transition.append(item)
transitions.append(inner_transition)
inner_transition = []
print(transitions)
Вот гораздо лучший результат после предложения @ michael-butscher
items = (102, 109, 120, 80, 40, 30, 200, 90)
high = 100
in_high = False
transitions = []
inner_transition = []
for item in items:
if item >= high and not in_high:
in_high = True
inner_transition.append(item)
elif item < high and in_high:
in_high = False
inner_transition.append(item)
transitions.append(inner_transition)
inner_transition = []
print(transitions)