"David Murmann" <david.murmann at rwth-aachen.de> wrote in message news:3q3pt9Fd7pklU1 at 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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4