Если вы не хотите использовать словарь (что, я думаю, вам следует), вы можете создать свой собственный автоматически расширяемый список:
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]