在Python中创建具有可变长度的列表

时间:2019-06-13 19:56:46

标签: python arrays variable-length-array

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也是如此。

谢谢!

2 个答案:

答案 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]