#python #list #datetime #strptime
Вопрос:
У меня есть n datetime.strptime
элементов, хранящихся в списке в "%I:%M:%S"
формате
total_logs = ['0:00:12', '0:10:02', , , n]
Как я могу их добавить?
Комментарии:
1. Вы имеете в виду, добавить их друг к другу? Что вы пробовали? Как бы вы добавили обычные номера в список друг к другу? Сделайте то же самое с объектами datetime после анализа строк.
2. попробуйте что-нибудь вроде
sum([datetime.datetime.strptime(i, "%I:%M:%S") for i in total_logs])
3. @Ghost Ops, я попробовал ваш метод, но есть ошибка типа: неподдерживаемые типы операндов для : ‘int’ и ‘datetime.datetime’
4. Не могли бы вы показать, что вы пробовали?
Ответ №1:
Для этого я бы использовал класс Timedelta от pandas
.
import pandas as pd
logs = ['0:00:12', '0:10:02']
r = pd.Timedelta(logs[0]) pd.Timedelta(logs[1])
print(r)
Выход: 0 days 00:10:14
Python datetime.timedelta
также может выполнить эту работу, но он не работает непосредственно со строками. Сначала вы должны преобразовать их с помощью datetime.datetime.strptime
.
Чтобы суммировать все элементы в списке, вам нужно начать с начальной точки, в следующем коде это так r
, затем вы повторяете список и добавляете в r
:
In [37]: r = pd.Timedelta(0)
In [38]: r
Out[38]: Timedelta('0 days 00:00:00')
In [39]: for item in logs:
...: r = pd.Timedelta(item)
...:
In [40]: print(r)
0 days 00:10:14
Однонаправленным для всего мышления было бы: sum(map(pd.Timedelta, logs), pd.Timedelta(0))
Комментарии:
1. Спасибо, это именно то, чего я хотел. Но как преобразовать этот код для n-го числа элементов в списке?
2. @MilindKhobragade проверьте обновленный ответ