def __getitem__(self, key):
        l = len(self)

        if isinstance(key, slice):
            indices = six.moves.range(*key.indices(l))
            return [(list.__getitem__(self, i) if i < l else None) for i in indices]

        if key >= l:
            return None

        return list.__getitem__(self, key)
roll back when exception occurred
dataset/ETHPy150Open wireservice/csvkit/csvkit/table.py/Column.__getitem__--crossover with--dataset/ETHPy150Open msopentechcn/open-hackathon/open-hackathon-server/src/hackathon/expr/expr_mgr.py/ExprManager.roll_back