我有一个完整的od日期时间对象列表,如下所示:
list1 = [(datetime1, datetime2), (datetime3, datetime4), (datetime5, datetim6)]
我想将其转换为日期时间对象列表,但是当我使用此代码时:
list2 = [i[j] for i in list1 for j in range(len(i))]
我得到的结果是整数列表,而不是日期时间。
稍后我还需要按时间对list2进行排序,然后将list2与list1进行比较。
有什么想法吗?
答案 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
重新分配给包含可重复但不包含整数的列表。