+1 Good performance analysis IMHO :)

On Tue, 29 Jan 2019, 22:24 Jonathan Fine <jfine2358@gmail.com wrote:
I've not been following closely, so please forgive me if I'm repeating
something already said in this thread.

Summary: str.join allows us to easily avoid, when assembling strings,
1. Quadratic running time.
2. Redundant trailing comma syntax error.

The inbuilt help(str.join) gives:
    S.join(iterable) -> str
        Return a string which is the concatenation of the strings in the
        iterable.  The separator between elements is S.

This is different from sum in two ways. The first is the separator S.
The second is performance related. Consider
    s = 0
    for i in range(100):
        s += 1
and
    s = ''
    for i in range(100):
        s += 'a'

The first has linear running time (in the parameter represented by
100). The second has quadratic running time (unless string addition is
doing something clever, like being lazy in evaluation).

The separator S is important. In Python a redundant trailing comma, like so,
    val = [0, 1, 2, 3,]
is both allowed and useful. (For example, when the entries are each on
a simple line, it reduces the noise that arises when an entry is added
at the end. And when the entries are reordered.)

For some languages, the redundant trailing comma is a syntax error. To
serialise data for such languages, you can do this:
    >>> '[{}]'.format(', '.join(map(str, v)))
    '[0, 1, 2, 3]'

>From here, by all means repackage for your own convenience in your own
library, or use a third party library that already has what you want.
(A widely used pypi package has, I think, a head start for adoption
into the standard library.)

By the way, as search for "python strtools" gives me
https://pypi.org/project/extratools/
https://www.chuancong.site/extratools/functions/strtools/

https://pypi.org/project/str-tools/. # This seems to be an empty stub.

--
Jonathan
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/