如何将完整日期时间对象的元组列表转换为日期时间对象列表而不更改类型?

时间:2015-08-20 23:29:07

标签: python datetime

我有一个完整的od日期时间对象列表,如下所示:

list1 = [(datetime1, datetime2), (datetime3, datetime4), (datetime5, datetim6)]

我想将其转换为日期时间对象列表,但是当我使用此代码时:

list2 = [i[j] for i in list1 for j in range(len(i))]

我得到的结果是整数列表,而不是日期时间。

稍后我还需要按时间对list2进行排序,然后将list2与list1进行比较。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

将一个元组添加到列表时,它会分别添加内部变量,只需使用:

list1 = [("datetime1", "datetime2"), ("datetime3", "datetime4"), ("datetime5", "datetim6")]
list2 = []

for datetime in list1: 
    list2 += datetime

答案 1 :(得分:0)

如果您打算排序并展平,只需一步即可完成:

from itertools import chain
srt_dates = sorted(chain.from_iterable(list1)

如果您只想按时间而不是日期和时间排序,可以使用lambda作为排序键:

from itertools import chain
from datetime import datetime

list1 = [(datetime(2015, 1, 2, 15, 0, 10), datetime(2015, 1, 2, 12, 0, 10)),
         (datetime(2015, 1, 2, 14, 05, 10), datetime(2015, 1, 4, 11, 0, 10))]
srt_dates = sorted(chain.from_iterable(list1), key=lambda x: (x.hour, x.min, x.second))

print(srt_dates)
[datetime.datetime(2015, 1, 4, 11, 0, 10), datetime.datetime(2015, 1, 2, 12, 0, 10), datetime.datetime(2015, 1, 2, 14, 5, 10), datetime.datetime(2015, 1, 2, 15, 0, 10)]

[i[j] for i in list1 for j in range(len(i))]唯一可以为您提供整数列表的方法是,如果您已将名称list1重新分配给包含可重复但不包含整数的列表。