сравнение списков по предыдущему индексу

1

У меня есть 2 списка, для которых мне хотелось бы сравнить один индекс:

for (min,max) in zip(csv_parse(2010)['min'],csv_parse(2010)['max']):

в основном мне хотелось бы что-то вроде этого:

если min> min (назад один шаг) и max <max (назад при приращении)

то, сделайте что-нибудь.

Благодаря !

  • 0
    ... А что ты собираешься делать с результатом сравнения? Вы не должны использовать min и max качестве имен переменных, кстати; это скрывает встроенные модули (которые, я смутно подозреваю, могут быть именно теми, которые вам нужны для краткого решения вашей проблемы ...)
Теги:

2 ответа

3
Лучший ответ
from itertools import izip
prev_min, prev_max = float('inf'), float('-inf')

for new_min, new_max in izip(csv_parse(2010)['min'], csv_parse(2010)['max']):
    if (new_min > prev_min) and (new_max < prev_max):
        #do something
    prev_min, prev_max = new_min, new_max

Поменяйте значения prev_min и prev_max выше цикла, если вы хотите, чтобы "сделать что - то" по первому вопросу.

Кроме того, вы, вероятно, захотите использовать izip для чего-то подобного. Вероятно, вы также не хотите анализировать свой csv дважды (один раз в минуту, один раз для максимального), но я не знаю точно, не видя, что такое csv_parse.

  • 0
    Хорошо.Спасибо
  • 0
    да, но мне пришлось ждать 4 минуты :)
Показать ещё 3 комментария
0

Вы можете сделать следующее:

min_values = csv_parse(2010)['min']
max_values = csv_parse(2010)['max']

for (prev_min, current_min, prev_max, current_max) in zip(min_values, min_values[1:], max_values, max_values[1:]):
    if current_min > prev_min and current_max < prev_max:
        …

Идея этого решения заключается в создании списка "предыдущих значений" вместе со списком "текущих значений" (…[1:]).

  • 0
    Кажется расточительным делать копии списка, вместо того, чтобы просто сохранить конечные значения?
  • 0
    @agf: это действительно не эффективно с точки зрения памяти; однако это хорошо работает со списками разумного размера. Кроме того, я считаю, что эта версия немного более разборчива, чем версия «конечных значений», поскольку логика кода показана в одной простой строке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню