我有一些要存储在某个容器中的值集,稍后仅按位置检索,例如:
index:0
value:(30,6700,3,21543)
index:34
value:(2,1)
index:36
value:(1,2,3,4,5,6,1001,9999)
index:69
value:(11)
其他地方都是空的。其中大约只有1/4有值。你知道吗
稍后,我将需要通过执行myList[34]=(2,1,9999,999999,9999999)
之类的操作来访问和修改(追加)这些值。你知道吗
然后我需要这样做:9999 in myList[34]
?是120 in myList[34]
?你知道吗
我不知道是应该创建一个字典将它们存储为键值对,还是使用一个列表。列表似乎是最直观的方式,但是列表中的大多数插槽实际上都是空的。你知道吗
单子和单子哪个更快?或者是否有其他具有更好时间性能的数据容器?你知道吗
时间是我最关心的。我昨天写了一小段代码,它已经运行了20多个小时了。我很沮丧:-(
速度:列表*
最佳编码实践:字典
*如果您有足够的内存来存储列表,并且数据集不会大量增长/收缩,那么使用列表将是最快的。你知道吗
如果数据集大量增长/收缩,或者无法在内存中容纳所有数据集,则必须使用字典。你知道吗
请注意,我上面的列表建议只是为了提高速度—这不是好的编码实践。你知道吗
对于您正在描述的情况,您肯定希望
dict
在list
之上;这样您就只为存在的项使用空间。你知道吗对于dict的内容,您希望使用
set(..)
而不是元组;这将使您的in
检查常量时间而不是长度相关的。你知道吗通过索引访问列表和dict中的元素是O(1)-有关详细信息,请参见Python wiki entry on time complexity。你知道吗
鉴于此,这里最重要的问题是空间,既然你说你的收藏是稀疏的,dict将是首选。你知道吗
相关问题 更多 >
编程相关推荐