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)
Return null for keys beyond the range of the column. This allows for columns to be of uneven length and still be merged into rows cleanly.
dataset/ETHPy150Open wireservice/csvkit/csvkit/table.py/Column.__getitem__