StringChain -- a data structure for managing large sequences ofchunks of bytes

Lie Ryan lie.1296 at
Tue Mar 30 13:23:32 CEST 2010

On 03/29/2010 01:59 AM, Steven D'Aprano wrote:
> On Sun, 28 Mar 2010 06:48:21 +1100, Lie Ryan wrote:
>> On 03/22/2010 07:07 PM, Steven D'Aprano wrote:
>>> Perhaps you should have said that it was a wrapper around deque giving
>>> richer functionality, rather than giving the impression that it was a
>>> brand new data structure invented by you. People are naturally going to
>>> be more skeptical about a newly invented data structure than one based
>>> on a reliable, component like deque.
>> Well, technically StringChain is not a data structure in the first
>> place. StringChain is a string;
> And strings are data structures, as are arrays and structs. Just because 
> they're simple data structures made directly from primitives rather than 
> rich, complex structures, doesn't mean they're not data structures.

Array is a way to structure data and thus a data structure; array is the
concept of structuring data using contiguous memory with elements
addressed by an index. string is just a contiguous memory reserved to
store data, or in other words: string is an array. This is what I meant
when I said string is not itself a data structure.

>> a string that is implemented using deque
>> data structure to make appending algorithmically efficient. It is not a
>> data structure, in the sense that I can't put arbitrary "thing" into the
>> data structure. 
> Any "thing" that can be pickled or serialised can be put into a string.

Fair enough, you're right to think so but IMHO I disagree. Streams (or
perhaps 'blob' to avoid the connotation of FIFO) are the data structure
which you can put anything pickleable/serialisable into, but string (the
implementation of stream/blob using array) are just a special case of
array data structure and not a different, separate data structure than

Perhaps I should not make such a bold claim as saying string is not data
structure; what I have in mind is that string is just a special case of
array and not distinctly separate data structure than array.

More information about the Python-list mailing list