создание последовательной пары временных списков - PullRequest
2 голосов
/ 19 февраля 2020

У меня есть список времени, который выглядит следующим образом, каждый раз увеличивается на 5 минут с последним временем 23: 59: 00.000

list_of_times = ['2020-01-30 00:00:00.000', '2020-01-30 00:05:00.000', '2020-01-30 00:10:00.000', '2020-01-30 00:15:00.000', '2020-01-30 00:20:00.000'... '2020-01-30 23:59:00.000']

То, что я хочу сделать, это закончить с список временных пар, подобных этому:

list_of_pairs = [['2020-01-30 00:00:00.000', '2020-01-30 00:05:00.000'],['2020-01-30 00:05:00.000','2020-01-30 00:05:00.000'], ... ['2020-01-30 23:55:00.000','2020-01-30 23:59:00.000']]

Обратите внимание, как в list_of_pairs время окончания первой пары ['2020-01-30 00:00:00.000', '2020-01-30 00:05:00.000'] является временем начала следующей пары ['2020-01-30 00:05:00.000','2020-01-30 00:05:00.000']

Мой код:

start_times = list_of_times[::2]
end_times = list_of_times[1::2]
count = 0
try:
    for item in start_times:
        pair_of_times.append([start_times[count],end_times[count]])
        count +=1
except:
    pass
print(pair_of_times)

Но мой результат, как и ожидалось, обратите внимание, как время начала 2-й пары 2020-01-30 00: 10: 00.000 '. Я хотел бы, чтобы это было время окончания предыдущей пары. Вот как теперь выглядит мой результат:

[['2020-01-30 00:00:00.000', '2020-01-30 00:05:00.000'], ['2020-01-30 00:10:00.000', '2020-01-30 00:15:00.000']...]

Не уверен, как правильно нарезать ломтиками, или даже если нарезка является правильным методом для получения результата, который я ищу. Я также открыт для генерации времени с нуля, так как мне дано время начала и окончания ie start = '2020-01-30 00: 00: 00.000'. end = '2020-01-30 23: 59: 00.000'

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете исправить это, используя step=1 на своих срезах, поскольку каждый раз (кроме первого и последнего) будет одновременно и началом, и временем окончания, поэтому вам не следует пропускать какое-либо время в любом списке:

# ...
start_times = list_of_times  # no slice needed at all
end_times = list_of_times[1:]
# ...

Вы можете еще больше упростить это, используя типичный шаблон, используя zip:

pair_of_times = list(zip(list_of_times, list_of_times[1:]))

Еще более эффективное пространство:

pair_of_times = [list_of_times[i:i+2] for i in range(len(list_of_times) - 1)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...