自分で拡張すればいいのに

分からないでもないけど 1、2 なんか、そのまま自分で拡張すればいいじゃねえかと。
dict.get 見たいなのが list にも欲しい?

def MyList(list):
    def get(i, default = None):
        if isinstance(i, integer):
            raise KeyError('index must be integer')
        elif i < 0:
            raise KeyError('index out of range')

        if i >= len(self):
            return default
        else:
            return self[i]

defaultdict みたいな defaultlist が欲しい?*1

class defaultlist(list):
    def __init__(self, default_factory = None, *args, **kwargs):
        super(defaultlist, self).__init__(*args, **kwargs)
        self.default_factory = default_factory

    def __getitem__(self, key):
        self._check_range()

        if key >= len(self):
            self.extend(self.__missing__(i) for i in xrange(len(self), key + 1))
        return self[key]

    def __setitem__(self, key, value):
        self._check_range()

        if key < len(self):
            return super(defaultlist, self).__setitem__(key, value)
        else:
            self.extend(self.__missing__(i) for i in xrange(len(self), key))
            return super(defaultlist, self).append(value)

    def _check_range(self, key):
        if not isinstance(key, integer):
            raise KeyError('index must be integer')
        if key < 0:
            raise KeyError('index out of range')

range/xrange が終端を含まないのが気に食わない?

def from_to(f, t):
    return xrange(f, t + 1)

まぁ、そんな感じ。

*1:スライスの処理をしてません