我要做的是获取两个时间戳列表,找到相应时间戳对之间的差异,然后将差异打印为另一个列表。当我打印出最终的时差列表时,我得到了这个:
[datetime.timedelta(0, 2700), datetime.timedelta(0, 1800)]
以下是我的参考代码:
import time
import datetime
strlist1 = ['12:45:00', '01:30:00']
format = '%H:%M:%S'
i = 0
timelist1 = []
for time in strlist1:
timelist1.append(datetime.datetime.strptime(strlist1[i], format))
i += 1
strlist2 = ['12:00:00', '01:00:00']
k = 0
timelist2 = []
for time in strlist2:
timelist2.append(datetime.datetime.strptime(strlist2[k], format))
k += 1
list3 = [x1 - x2 for (x1, x2) in zip(timelist1, timelist2)]
另外,我对Python很新,因此非常感谢任何其他关于改进和/或改变其他方法的建设性意见。谢谢!
答案 0 :(得分:1)
列表元素将使用repr
,而repr
通常不是人类可读的。
>>> L = [datetime.timedelta(0, 2700), datetime.timedelta(0, 1800)]
>>> L
[datetime.timedelta(0, 2700), datetime.timedelta(0, 1800)]
你想:
>>> map(str, L) # or: [str(delta) for delta in L]
['0:45:00', '0:30:00']
答案 1 :(得分:1)
这应该为您提供更易读的格式:
[((datetime.datetime.strptime('00:00:00', format))+e).strftime(format) for e in list3]
Out[340]: ['00:45:00', '00:30:00']
答案 2 :(得分:1)
这是一个开始。在Python中,迭代序列时不需要计数器,因此不需要变量i
和k
。正如wim所指出的,你可能想要输出的字符串表示。最后,您可以使用列表推导而不是循环生成列表。
import time
import datetime
strlist1 = ['12:45:00', '01:30:00']
format = '%H:%M:%S'
# i = 0 Not needed
timelist1 = [datetime.datetime.strptime(s, format) for s in strlist1]
strlist2 = ['12:00:00', '01:00:00']
timelist2 = [datetime.datetime.strptime(s, format) for s in strlist2]
list3 = [str(x1 - x2) for (x1, x2) in zip(timelist1, timelist2)]