我无法解决这个问题并且需要帮助才能理解为什么在以下代码块中返回时它只输出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:
2015年11月11日至2015年12月2日
2016年4月3日至2016年4月15日
2016年5月10日至2016年5月22日
输出2:
2015年11月11日至2015年12月2日
答案 0 :(得分: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())
UPDATE :return
在循环内部,并在第一步后退出函数。