I'm wondering how Python does string comparison, more specifically how it determines the outcome when a less than (<) or greater than (>) sign is used.
For instance if I put print('abc' < 'bac') I get true. I understand that it compares corresponding characters in the string, however its unclear as to why there is more, for lack of a better term, "weight" placed on the fact that a is less than b (first position) in first string rather than the fact that a is less than b in the second string (second position).
From the docs:
The comparison uses lexicographical ordering: first the first two items are compared, and if they differ this determines the outcome of the comparison; if they are equal, the next two items are compared, and so on, until either sequence is exhausted.
Lexicographical ordering for strings uses the Unicode code point number to order individual characters.
or on Python 2:
Lexicographical ordering for strings uses the ASCII ordering for individual characters.
As an example:
>>> 'abc' > 'bac' False >>> ord('a'), ord('b') (97, 98)
False is returned as soon as
a is found to be less than
b. The further items are not compared (as you can see for the second items: