在Python中创建整数和日期时间的列表

1 投票
2 回答
1136 浏览
提问于 2025-04-18 16:28

我想知道怎么在Python里创建一个列表(或者如果可以的话,创建一个numpy数组),这个列表的第一列是datetime对象,其他列是不同的数据类型。

比如,这个列表看起来会像这样:

list = [[<datetime object>, 0, 0.]
        [<datetime object>, 0, 0.]
        [<datetime object>, 0, 0.]]

那么,创建和初始化这样一个列表的最佳方法是什么呢?

到目前为止,我尝试过使用np.emptynp.zeros,还有类似于这样的列表推导式:

list = [[None for x in xrange(3)] for x in xrange(3)]

但是如果我这样做的话,我就需要一个for循环来填充第一列,而似乎没有更简单的方法来像下面这样赋值:

list[0][:] = another_list_same_length

2 个回答

1

使用 zip 函数

>>> column1 = [1, 1, 1]
>>> column2 = [2, 2, 2]
>>> column3 = [3, 3, 3]
>>> zip(column1, column2, column3)
[(1, 2, 3), (1, 2, 3), (1, 2, 3)]
>>> # Or, if you'd like a list of lists:
... 
>>> [list(tup) for tup in zip(column1, column2, column3)]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
>>> 

这样你可以分别创建每一列,然后再把它们组合在一起。column1 可以是日期(或者其他任何东西)。

希望这对你有帮助。

2

你是说像这样:

In [17]: import numpy as np

In [18]: np.array([[[datetime.now(),np.zeros(2)] for x in range(10)]])
Out[18]: 
array([[[datetime.datetime(2014, 8, 7, 23, 45, 12, 151489),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151560),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151595),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151619),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151634),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151648),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151662),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151677),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151691),
         array([ 0.,  0.])],
        [datetime.datetime(2014, 8, 7, 23, 45, 12, 151706),
         array([ 0.,  0.])]]], dtype=object)

撰写回答