testList= []
testList[12]= 31
testList[23]= 1337
Error: IndexError: list assignment index out of range
基本上我有唯一的整数,我想将列表用于哈希函数h(x)= x(因为它们是唯一的)
我可以这样初始化长度:
testList= [0 for i in range(50)]
但是随后我必须确定大小和我随时间增加的唯一编号。可以将大小设置为例如1-2Mio,还是可以动态地执行此操作? Java中的ArrayList <>是动态用于附加和删除的,Python中的List也是如此。
谢谢!
答案 0 :(得分:5)
也许您需要一个dict
:
testList = {}
testList[12]= 31
testList[23]= 1337
print(testList)
print(testList[23])
输出:
{12: 31, 23: 1337}
1337
答案 1 :(得分:0)
如果您不想使用字典(我确实应该这样做),则可以创建自己的自动扩展列表:
class defaultlist(list):
def __init__(self,defData):
self.defData = defData
def _getDefault(self):
if isinstance(self.defData,type):
return self.defData()
return self.defData
def __getitem__(self,index):
if index >= len(self):
return self._getDefault()
return super.__getitem__(index)
def __setitem__(self,index,value):
while index>=len(self):
self.append(self._getDefault())
list.__setitem__(self,index,value)
testList = defaultlist(0) # need to provide a default value for auto-created items
testList[12]= 31
testList[23]= 1337
print(testList)
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1337]