@maryaTurova

Как вывести длину списка за последние сутки и за последний час?

При каждом запросе на flask сохраняю текущее время в список:

list.append(round(time.time()))

Список имеет вид:
[1628179279, 1628179280, 1628179281, 1628179282, 1628179283, 1628179284, 1628179285, 1628179287, 1628179288, 1628179289, 1628179290, 1628179291, 1628179292, 1628179293.....]

Мне нужно сохранить длину списка только за последние сутки, вывести в print() длину за последние сутки и за последний час.
Длина списка за сутки составляет около 500 тыс.
Подскажите наиболее не ресурсоемкий подход вывода за сутки и за час?
  • Вопрос задан
  • 195 просмотров
Решения вопроса 2
MinTnt
@MinTnt
Ну, это не так и сложно.
Сначала нужно отсчитать какое время было ровно сутки назад
time.time()-(60*60*24)
А дальше пустить обычный цикл
time_day_before = time()-(60*60*24)
n = 0
for x in lst:
	if x < time_day_before:
		break
	n += 1
		
		
print(n)
Ответ написан
@maryaTurova Автор вопроса
Сам отвечу:
arr_day = [1628179279, 1628179280, 1628179281, 1628179282, 1628179283, 1628179284, 1628179285, 1628179287, 1628179288, 1628179289, 1628179290, 1628179291, 1628179292, 1628179293.....]

time_day = time.time()-(60*60*24)
time_hour = time.time()-(60*60)
arr_day = [item for item in arr_day if item > time_day]
arr_hour = [item for item in arr_day if item > time_hour]
            
print('Решено за час : '+str(len(arr_hour)))
print('Решено за сутки : '+str(len(arr_day)))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@gimntut
Самый экономный способ - это завести 2 счётчика: для суток и для часа.
Их нужно сбрасывать в ноль, соответственно, в начале суток и в начале часа.
При добавлении нового времени увеличивать счётчики. Вот и всё. Данные всегда будут актуальные и не нужно будет заглядывать в список.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы