Python 将时间列表转换为总时间
我有三个列表,一个是小时,一个是分钟,一个是秒。我所做的是创建一个函数,将3个列表作为输入,并计算总时间 我的问题是这个函数是如此的冗余,我想问你的问题很简单:有什么更好的方法可以做到这一点 以下是我的功能:Python 将时间列表转换为总时间,python,list,function,time,Python,List,Function,Time,我有三个列表,一个是小时,一个是分钟,一个是秒。我所做的是创建一个函数,将3个列表作为输入,并计算总时间 我的问题是这个函数是如此的冗余,我想问你的问题很简单:有什么更好的方法可以做到这一点 以下是我的功能: def final_time(hours,minutes,seconds): draft_hours = sum(hours) draft_minutes = sum(minutes) draft_seconds = sum(seconds) adding_
def final_time(hours,minutes,seconds):
draft_hours = sum(hours)
draft_minutes = sum(minutes)
draft_seconds = sum(seconds)
adding_seconds = str(draft_seconds/60.0)
second_converting = adding_seconds.split(".")
seconds_to_minutes = int(second_converting[0])
seconds_to_seconds = draft_seconds - (seconds_to_minutes * 60)
total_seconds = str(seconds_to_seconds)
more_minutes = draft_minutes + seconds_to_minutes
adding_minutes = str(more_minutes/60.0)
minute_converting = adding_minutes.split(".")
minutes_to_hours = int(minute_converting[0])
minutes_to_minutes = more_minutes - (minutes_to_hours * 60)
total_minutes = str(minutes_to_minutes)
total_hours = str(draft_hours + minutes_to_hours)
return total_hours + " hours, " + total_minutes + " minutes, and " + total_seconds + " seconds."
以下是一个例子:
my_hours = [5, 17, 4, 8]
my_minutes = [40, 51, 5, 24]
my_seconds = [55, 31, 20, 33]
print final_time(my_hours,my_minutes,my_seconds)
以上申报表:
36 hours, 2 minutes, and 19 seconds.
因此它确实有效,但正如您所看到的,该函数既不是python函数,也不是有效函数…有什么更好的方法吗?我可能会首先将其转换为秒:
def HMSToSeconds(H,M,S):
return H*3600 + M * 60 + S
def SecondsToHMS(seconds):
hours,seconds = divmod(seconds,3600)
mins,seconds = divmod(seconds,60)
return hours,mins,seconds
def final_time(hours,minutes,seconds):
draft_hours = sum(hours)
draft_minutes = sum(minutes)
draft_seconds = sum(seconds)
total_seconds = HMSToSeconds(draft_hours,draft_minutes,draft_seconds)
return SecondsToHMS(total_seconds)
seconds = sum(3600*h + 60*m + s for (h,m,s) in zip(hours,minutes,seconds)
现在把它分解回去:
n_hours,minutes = divmod(seconds,3600)
n_minutes,n_seconds = divmod(minutes,60)
我将使用Datetime中的时间对象 这大概是:
def final_time(hours,minutes,seconds):
times=[datetime.time(hours[i],minutes[i],seconds[i]) for i in range(0,length(hours))]
return sum(times)
我更喜欢你把时间转换成秒。我的假设是,在
小时
、分钟
和秒
中有相同数量的元素,但我想我看不出为什么一般情况下会出现这种情况。(+1)以“所以它确实有效”开头的问题最好在
def final_time(hours,minutes,seconds):
times=[datetime.time(hours[i],minutes[i],seconds[i]) for i in range(0,length(hours))]
return sum(times)