我想初始化一个多维列表,能够自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"在尝试执行此操作时。
答案 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以添加更多维度。