2016-07-25 73 views
1

我无法解决这个问题,并且需要帮助来理解为什么在下面的代码块中返回时它只输出date_list中的第一个列表,而不是与print语句相同?代码块不会返回所有值吗?

date_list = [['2015-11-11', '2015-12-02'], ['2016-04-03', '2016-04-15'], ['2016-05-10', '2016-05-22']] 

def formatdates(): 
    for i in range(len(date_list)): 
     start_date = date_list[i][0] 
     end_date = date_list[i][1] 
     s = datetime.strptime(start_date, "%Y-%m-%d") 
     e = datetime.strptime(end_date, "%Y-%m-%d") 
     formatted_s = s.strftime("%e-%b-%Y") 
     formatted_e = e.strftime("%e-%b-%Y") 
     i += 1 
     print("{} to {}".format(formatted_s, formatted_e)) # Output 1 below 
     return print("{} to {}".format(formatted_s, formatted_e)) # Output 2 below 
print(formatdates()) 

想要的结果是在函数中返回时,根据print语句输出格式化日期列表? 如何将所有行作为打印列表返回?


输出1:

11-NOV-2015 2-DEC-2015

3-APR-2016至15-APR-2016

10五月 - 2016年22月 - 2016

输出2:

11-NOV-2015 2-DEC-2015

回答

1
date_list = [['2015-11-11', '2015-12-02'], ['2016-04-03', '2016-04-15'], ['2016-05-10', '2016-05-22']] 

def formatdates(): 
    ret_date = [] 
    for d in date_list: 
     start_date = d[0] 
     end_date = d[1] 
     s = datetime.strptime(start_date, "%Y-%m-%d") 
     e = datetime.strptime(end_date, "%Y-%m-%d") 
     formatted_s = s.strftime("%e-%b-%Y") 
     formatted_e = e.strftime("%e-%b-%Y") 
     # print("{} to {}".format(formatted_s, formatted_e)) 
     ret_date.append("{} to {}".format(formatted_s, formatted_e)) 
    return ret_date 
print(formatdates()) 

UPDATEreturn是循环内,并且使功能第一步骤之后退出。

+1

这是值得添加一个解释,所以OP实际上知道他们的代码有什么问题,并可以从下次的错误中学习。 – DeepSpace

+0

@valentin,谢谢我明白我现在做错了什么:) – MattE

+0

@DeepSpace,对于遇到同样问题的新用户会有好处。 –

相关问题