初始化一个空的多维列表

时间:2018-03-11 03:53:18

标签: python

我想初始化一个多维列表,能够自1950 - 2050年以来每分钟存储一个对象。

类似的东西:

minute = [None]*61
hour = [minute]*25
day = [hour]
month = [day]
data = [month]*100

所以你可以这样做:

data[89][1][29][23][55] = 'It was a good minute the one from January 29th in 1989 when it was 23:55'

如何在Python中初始化这样的多维列表?它是一个与上面代码创建的实际不同的对象吗?

最初,多维列表将包含无对象。

Python 2.7

以下回答我试过了:

# Data structure
minute = 60
hour = 24
day = 31
month = 12
year = 100
test = [[[[[None for _minute in range(minute)] for _hour in range(hour)] for _day in range(day)] for _month in range(month)] for _year in range(year)]

但是对于多维列表来说似乎太多了,因为我得到了" Killed"在尝试执行此操作时。

2 个答案:

答案 0 :(得分:2)

不建议这样做,但您可以使用"html":"Text from <textarea>"

numpy.chararray

我不确定你想要的结构是什么,但我插入数组的字符串应该解释我提出的结构,你可以根据需要改变它。请注意,import numpy as np arr = np.chararray((100, 12, 31, 24, 60, 60), itemsize=100) arr[52, 7, 12, 12, 44, 54] = 'year 1950+52, 7th month, 12th day, 12th hour, 44th minute, 54th second' 会限制您可以在任何索引中输入的字符数。

同样,需要注意的是,这不一定是世界上最有效的事情,但如果您希望在该数组中存储整数和/或浮点数列表(根据您的评论),可以采取一种方法它将该列表转换为字符串,然后在检索它时,重新转换回列表:

itemsize

这应该很快

答案 1 :(得分:1)

虽然我不推荐它, 可以使用列表推导创建多维空列表:

> >>> a = 4 #Width of elements
> >>> b = 6 #Width of main list container
>>>>> c = 4
>>>>> d = 3
> >>> l = [[[[0 for k in range(d) ] for z in range(c)] for x in range(a)] for y in range(b)]
> >>> [[[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]]]
  

继续用列表推导替换0以添加更多维度。