immutable object の slice

最近気づいたんだけど、Python の tuple や str って slice 作ったときに領域コピーされているっぽい。
つまり

l = tuple(range(10000))
m = [l[i:] for i in xrange(1000)]

とかやるとすごいメモリを食う感じ。list なら仕方がないかと思うんだけど、tuple や str は immutable object なんだから領域共有して欲しいなぁ(Java の String#substring は領域を共有するから文字列領域のコピーは発生しない)。自分で実装するべき?それとも標準モジュールにそういうのがあるのかな。
コピーを生成しないなら Suffix Array の構築は

def build_suffix_array(text, indices = None):
    if indices is None: indices = range(len(text))
    indices.sort(lambda i, j: cmp(text[i:], text[j:]))
    return indices

で良いのに。