On Sun, 27 Feb 2000, Ka-Ping Yee wrote:
On Sun, 27 Feb 2000, Fredrik Lundh wrote:
here's one proposal, off the top of my head:
- introduce a PySliceListObject, which behaves like a
simple sequence of strings, but stores them as slices.
It occurred to me when i read this that *all* slices could be references within the original string, since strings are immutable. That is,
could return a PyStringRefObject that behaves just like a string, but contains a length y - x and a pointer to &(s->ob_sval) + x instead of the character data itself. The creation of this PyStringRefObject would increment the reference count of s by 1.
This is exactly what the PyBufferObject does. I just documented the thing in api.tex a week ago or so. Regardless, the thing can operate exactly like a lightweight slice object. It it very similar at the Python level to a string, but it doesn't have the new string methods (yet) :-(
If you want a temporary object for your slices (before recomposition with a "".join), then you should be able to use the buffer objects.
[ unfortunately, the "".join method is nowhere near as optimal as it could be... it converts elems to string objects during the concatenation; it should have a variant that uses the buffer interface to precalculate the joined size, then use the interface to fetch the data ]