Re: Feature Proposal: Sequence .join method
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.python archive

Re: Feature Proposal: Sequence .join method

From: Terry Reedy <tjreedy@udel.edu>
Date: Fri Sep 30 2005 - 18:23:56 CEST

"David Murmann" <david.murmann@rwth-aachen.de> wrote in message
news:3q3pt9Fd7pklU1@news.dfncis.de...
>> def join(sep, seq):
>> return reduce(lambda x, y: x + sep + y, seq, type(sep)())
>
> damn, i wanted too much. Proper implementation:
>
> def join(sep, seq):
> if len(seq):
> return reduce(lambda x, y: x + sep + y, seq)
> return type(sep)()
>
> but still short enough

For general use, this is both too general and not general enough.

If len(seq) exists then seq is probably reiterable, in which case it may be
possible to determine the output length and preallocate to make the process
O(n) instead of O(n**2). I believe str.join does this. A user written
join for lists could also. A tuple function could make a list first and
then tuple(it) at the end.

If seq is a general (non-empty) iterable, len(seq) may raise an exception
even though the reduce would work fine.

Terry J. Reedy
Received on Sat Oct 15 04:00:34 2005