python 如何用时间元素创建元组的元组?

How Can python create tuple of tuple with time elements?

我想创建一个这样的元组:

(('0', '00:00:00'), ('1', '00:30:00'), ('2', '00:01:00') ..., ('46', '23:00:00'), ('47', '23:30:00'))

尝试次数:

lines = []
a = datetime.timedelta(minutes=0)
for ii in range (48):
    lines.append(a)
    a = a.timedelta(minutes=30)

我尝试了各种方法,但我真的不知道该怎么办?

尝试将列表与元组转换结合使用

l = []
for i in xrange(10):
    l.append(('1', '00:30:00'))   <--- set your data here
t  =tuple(l)   # convert it to tuple

这感觉像是可以用 datetime and timedelta 个对象来完成的事情。

对于元组创建元组,我使用了生成器表达式。

>>> from datetime import datetime, timedelta
>>> dt = datetime(1970 ,1 ,1)
>>> t = timedelta(minutes=30)
>>> tuple((str(i), (dt + (i * t)).strftime("%X")) for i in range(48))
(('0', '00:00:00'), ..., ('47', '23:30:00'))
>>>

您可以使用 generator 以 30 分钟为间隔构建时间列表。

def yield_times():  
    start = datetime.combine(date.today(), time(0, 0))
    yield start.strftime("%H:%M:%S")
    while True:
        start += timedelta(minutes=30)
        yield start.strftime("%H:%M:%S")

使用这个生成器,我们可以创建一个元组列表。 48 在这种情况下,是通过生成器的迭代次数。此 range 语句将从 0 开始,为我们提供值 0 - 47。

gen = yield_times()
tuple_list = []
for ii in range(48):
    tuple_list.append((ii, gen.next()))

最后,我们需要将元组列表转换为元组的元组:

tuple_times = tuple(tuple_list)

完整脚本:

from datetime import date, time, datetime, timedelta
def yield_times():  
    start = datetime.combine(date.today(), time(0, 0))
    yield start.strftime("%H:%M:%S")
    while True:
        start += timedelta(minutes=30)
        yield start.strftime("%H:%M:%S")

gen = yield_times()
tuple_list = []
for ii in range(48):
    tuple_list.append((ii, gen.next()))

tuple_times = tuple(tuple_list)