Tengo una lista ordenada (es decir, ordenada) que contiene fechas ordenadas (como objetos datetime) en orden ascendente.Creando una lista de meses iterando entre dos fechas en una lista (Python)
Quiero escribir una función que itera a través de esta lista y genera otra lista de las primeras fechas disponibles para cada mes.
Por ejemplo, supongamos que mi lista ordenada contiene los siguientes datos:
A = [
'2001/01/01',
'2001/01/03',
'2001/01/05',
'2001/02/04',
'2001/02/05',
'2001/03/01',
'2001/03/02',
'2001/04/10',
'2001/04/11',
'2001/04/15',
'2001/05/07',
'2001/05/12',
'2001/07/01',
'2001/07/10',
'2002/03/01',
'2002/04/01',
]
La lista devuelta sería
B = [
'2001/01/01',
'2001/02/04',
'2001/03/01',
'2001/04/10',
'2001/05/07',
'2001/07/01',
'2002/03/01',
'2002/04/01',
]
La lógica que propongo sería algo como esto:
def extract_month_first_dates(input_list, start_date, end_date):
#note: start_date and end_date DEFINITELY exist in the passed in list
prev_dates, output = [],[] # <- is this even legal?
for (curr_date in input_list):
if ((curr_date < start_date) or (curr_date > end_date)):
continue
curr_month = curr_date.date.month
curr_year = curr_date.date.year
date_key = "{0}-{1}".format(curr_year, curr_month)
if (date_key in prev_dates):
continue
else:
output.append(curr_date)
prev_dates.append(date_key)
return output
¿Algún comentario, sugerencia? - ¿Se puede mejorar esto para ser más 'Ptónico'?
@ "# <- ¿esto es legal?": sí, se llama * asignación múltiple * – miku
'para (curr_date en input_list)' es un error de sintaxis; no hay paréntesis aquí en Python. – Philipp
Su ejemplo de datos consiste en cadenas, en su texto usted escribe que tiene objetos datetime. Quizás debas aclarar que algunas de las soluciones son específicas para cadenas, tendrás que reescribirlas ligeramente para objetos datetime. –