У вас есть список списков, а не список строк. Один из способов решения этой проблемы - выравнивание перед обработкой. Понимание списка с помощью itertools.chain
- эффективный способ сделать это.
from datetime import datetime
from itertools import chain
lst = [['01/01/2016 00h15m'], ['01/01/2016 00h48m'], ['01/01/2016 01h08m'],
['01/01/2016 03h06m'], ['01/01/2016 05h22m'], ['01/01/2016 08h34m'],
['01/01/2016 09h59m']]
res = [datetime.strptime(x, '%d/%m/%Y %Hh%Mm') for x in chain.from_iterable(lst)]
print(res)
[datetime.datetime(2016, 1, 1, 0, 15), datetime.datetime(2016, 1, 1, 0, 48),
datetime.datetime(2016, 1, 1, 1, 8), datetime.datetime(2016, 1, 1, 3, 6),
datetime.datetime(2016, 1, 1, 5, 22), datetime.datetime(2016, 1, 1, 8, 34),
datetime.datetime(2016, 1, 1, 9, 59)]
Если вы хотите повторить результаты, не формируя новый список, используйте выражение генератора:
for dt in (datetime.strptime(x, '%d/%m/%Y %Hh%Mm') for x in chain.from_iterable(lst)):
# do something with dt