class DynamicList(list):

    def __init__(self, gen):
        self._gen = gen

def __getitem__(self, index):
    while index >= len(self):
        self.append(next(self._gen))
return super(DynamicList, self).__getitem__(index)
Динамический список, который автоматически расширяется