我有这个元组列表:
b = [(1337345, 'xxx', '2016-05-18 18:44:26.0'),
(1337346, 'yyy', '2016-05-18 18:44:35.0')]
最好使用datetime.strptime(my_date, '%Y-%m-%d %H:%M:%S.%f')
将每个元组中的日期转换为日期时间对象?
我无法直接修改元组,因此我认为必须通过构建新列表来完成此操作?什么是最有效的方法?
答案 0 :(得分:4)
我可能会使用list comprehension并使用格式化日期构建一个新元组:
[(tup[0], tup[1], datetime.strptime(tup[2], '%Y-%m-%d %H:%M:%S.%f') for tup in b]
答案 1 :(得分:2)
你可以使用列表理解,解压每个元组,只对第三个元素做一些事情:
>>> from datetime import datetime
>>> b = [(1337345, 'xxx', '2016-05-18 18:44:26.0'),
... (1337346, 'yyy', '2016-05-18 18:44:35.0')]
>>> [(first, second, datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f')) for first, second, date in b]
[(1337345, 'xxx', datetime.datetime(2016, 5, 18, 18, 44, 26)), (1337346, 'yyy', datetime.datetime(2016, 5, 18, 18, 44, 35))]
如果您使用的是Python3.5,您也可以这样做:
>>> [(*head, datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f')) for *head, date in b]
[(1337345, 'xxx', datetime.datetime(2016, 5, 18, 18, 44, 26)), (1337346, 'yyy', datetime.datetime(2016, 5, 18, 18, 44, 35))]