can it be shorter?

Scott David Daniels Scott.Daniels at Acm.Org
Sun Jun 7 00:28:16 CEST 2009


kj wrote:
> ... And actually, if speed is the criterion, then one should also avoid endswith:
> 
>>>> from timeit import Timer
>>>> min(Timer("if s[-1] != '/': s += '/'", "s = 'abcd/efgh'").repeat())
> 0.18654584884643555
>>>> min(Timer("if not s.endswith('/'): s += '/'", "s = 'abcd/efgh'").repeat())
> 0.43395113945007324

_but_, try this with s = '', and you are in trouble.
So, try:

     if s[-1:] != '/':
         s += '/'

To be a trifle more reliable. But, for more normal semantics,
you might prefer either:
     if s[-1:] != '/':
         s = (s or '.') + '/'
or:
     if s and s[-1] != '/':
         s += '/'

--Scott David Daniels
Scott.Daniels at Acm.Org



More information about the Python-list mailing list