On Tue, Apr 02, 2019 at 07:28:01PM +0100, MRAB wrote: [...]
word[len(prefix) if word.startswith(prefix) else 0:]
It could be 'improved' more to:
word[word.startswith(prefix) and len(prefix) : ] [...] _Neither_ version copies if the word doesn't start with the prefix. If you won't believe me, test them! :-)
That slicing doesn't make a copy of the string is an implementation- dependent optimization, not a language guarantee. It's an obvious optimization to make (and in my testing, it does work all the way back to CPython 1.5) but if you want to write implementation-independent code, you shouldn't rely on it. By the letter of the language spec, an interpreter may make a copy of a string when doing a full slice string[0:len(string)]. -- Steven