Quantcast
Channel: Planet Python
Viewing all articles
Browse latest Browse all 22462

Will McGugan: Strings hiding in plain sight

$
0
0

It's not often I come across something in Python that surprises me. Especially in something as mundane as string operations, but I guess Python still has a trick or two up its sleeve.

Have a look at this string:

>>> s = "A"

How many possible sub-strings are in s? To put it another away, how many values of x are there where the expression x in s is true?

Turns out it is 2.

2?

Yes, 2.

>>> "A" in s
True
>>> "" in s
True

The empty string is in the string "A". In fact, it's in all the strings.

>>> "" in "foo"
True
>>> "" in ""
True
>>> "" in "here"
True

Turns out the empty string has been hiding every where in my code.

Not a complaint, I'm sure the rationale is completely sound. And it turned out to be quite useful. I had a couple of lines of code that looked something like this:

if character in ('', '\n'):
   do_something(character)

In essence I wanted to know if character was an empty string or a newline. But knowing the empty string thang, I can replace it with this:

if character in '\n':
    do_something(character)

Which has exactly the same effect, but I suspect is a few nanoseconds faster.

Don't knock it. When you look after the nanoseconds, the microseconds look after themselves.


Viewing all articles
Browse latest Browse all 22462

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>