Python:datetime的整数列表?

Python:datetime的整数列表?,python,Python,我有一个列表[14,9,11,2,1,21],我想在datetime对象中转换它,例如2014/09/11 02:01:21 v类似的方法可行,但显然不是正确的解决方法: >>> datetime(x[0], x[1], x[2], x[3], x[4], x[5], x[6]) 我该怎么做呢?这不太理想,但你可以在一年中增加2000后解包,否则你将进入第14年,例如: from datetime import datetime x = [14,9,11,2,1,21] x

我有一个列表[14,9,11,2,1,21],我想在datetime对象中转换它,例如2014/09/11 02:01:21

v类似的方法可行,但显然不是正确的解决方法:

>>> datetime(x[0], x[1], x[2], x[3], x[4], x[5], x[6])

我该怎么做呢?

这不太理想,但你可以在一年中增加2000后解包,否则你将进入第14年,例如:

from datetime import datetime

x = [14,9,11,2,1,21]
x[0] += 2000
dt = datetime(*x)
# 2014-09-11 02:01:21

您需要展开列表x中包含的参数:

此解决方案的优点是比Jon的更直接,并且不修改输入列表,这使得它更普遍有用

PS:如果你需要在中间修改一个值,比如说第三值,那么这就更复杂了,乔恩的答案在这种情况下可能更容易理解:

other_function(*(x[:2] + [x[2]+2000] + x[3:]))  # A new list is first created with the modified arguments
除了Eric Lebigots之外,您还可以在列表理解中使用enumerate来针对多个索引。这也不会修改输入列表

例如,如果您想在一年中增加2000个小时,并且出于某种原因也要增加12个小时:


datetime*[n+2000如果y==0,则n+12如果y==3,则n代表y,n在enumerate[14,9,11,2,1,21]

不同的整数应该代表日期时间的哪些部分?显然不是正确的方法。为什么呢?只有你知道如何在这两种表示之间进行映射。@SimonBrahan对不起,我更新了question@jonrsharpe很好,你是right@JonClements没问题,这不是什么秘密技术!记住要加上年份,得+1。我的+1是一个解释得很好的替代答案,解释了改变列表和创建切片等之间的区别。如果我真的关心原始列表,那么我会把你的第一个建议作为第一选择。
x = [14,9,11,2,1,21]
dt = datetime(x[0]+2000, *x[1:])  # The star expands the remaining integers into arguments for datetime()
# 2014-09-11 02:01:21
other_function(*(x[:2] + [x[2]+2000] + x[3:]))  # A new list is first created with the modified arguments