我需要创建像[[0,1,2],[4,4,5,7]...[4,5]]
这样的整数数组。内部阵列的大小可以改变。内部数组的最大数量为2^26
。那么您建议以最快的方式更新此阵列。
当我使用list=[[]] * 2^26
时,初始化非常快,但更新速度非常慢。相反,我使用
list=[] , for i in range(2**26): list.append.([])
。
现在初始化很慢,更新很快。例如,对于16777216内部阵列和0.213827311993每个阵列上的元素数量为2 ^ 26元素阵列,需要1.67728900909秒。它很好,但我会工作更大的数据,因此我需要最好的方法。初始化时间并不重要。 谢谢。
答案 0 :(得分:0)
你问的是一个很大的问题。不同的数据结构具有不同的属性一般来说,如果您需要快速访问,请不要使用列表!它们具有线性访问时间,这意味着,您放入它们的次数越多,访问元素的平均时间就越长。
你也许可以使用numpy?该库具有可以非常快速地访问的矩阵,并且可以在运行中重新整形。但是,如果要添加或删除行,它可能会有点慢,因为它通常会重新分配(从而复制)整个数据。所以这是一个权衡。
如果要有这么多不同大小的内部数组,也许你可以拥有一个包含内部数组的字典。我认为如果它被整数索引,它将比列表快得多。然后,可以使用numpy创建内部数组。