以下是传递给定示例的最少代码(进行必要的调整:您期望使用怪异的空格和引号,在没有
class SparseList(list): def __setitem__(self, index, value): missing = index - len(self) + 1 if missing > 0: self.extend([None] * missing) list.__setitem__(self, index, value) def __getitem__(self, index): try: return list.__getitem__(self, index) except IndexError: return None__test__ = dict(allem='''>>> l = SparseList()>>> l[]>>> l[2] = "hello">>> l[None, None, 'hello']>>> print l[5]None>>> l[4] = 22>>> l[None, None, 'hello', None, 22]>>> len(l)5>>> for i in l: print iNoneNonehelloNone22''')import doctestdoctest.testmod(verbose=1)
我想您会想要更多(支持负索引,切片等),但这是您所有示例的隐式指定。



