Как сравнить строки в Python? Операторы сравнения строк
Строка в Python представляет собой набор символов, находящихся в кавычках. При этом сравнение строк отличается от сравнения чисел и имеет свои особенности. В этой статье мы кратко и простым языком расскажем о сравнении строк в Python и посмотрим, какие операторы для этого есть, и как эти операторы используются.
Основные операторы сравнения в Python
Итак, в языке программирования Python для сравнения строк используют следующие операторы:
- оператор
< , «меньше»; - оператор
<= , «меньше или равно; - оператор
== , «равно»; - оператор
!= , «не равно»; - оператор
> , «больше»; - оператор
>= , «больше или равно».
Использование оператора «больше/меньше»
Ниже вы увидите простейший пример сравнения строк в Python с помощью соответствующих операторов:
print("apple" > "banana") False print("apple" < "banana") True
Так как буква «a» находится перед «b», слово apple будет находиться перед словом banana, что логично (то есть banana больше, чем apple). Однако всё сложнее, чем может показаться на первый взгляд. Давайте для наглядности сравним, равны ли слова Apple и apple:
print("apple" == "Apple") False print("apple" > "Apple") True
Мы увидим отсутствие равенства, а всё потому, что в Python одинаковые буквы, имеющие разный регистр, считаются разными символами, и компьютер их различает по присвоенным им уникальным значениям.
Что касается нашей ситуации, то здесь латинская «А» имеет значение 65, в то время как значение строчной «а» равно 97.
Кстати, если хотите узнать уникальное значение какого-нибудь символа, используйте функцию ord:
print(ord("A")) 65
При сравнении символов или строк, Python конвертирует символы в их соответствующие порядковые значения, после чего сравнивает слева направо.
Существует функция chr, преобразовывающая порядковое значение в символ. Пример:
print(chr(1040)) А
Например, кириллическая А соответствует значению 1040. Есть свои значения у цифр, а также вспомогательных знаков, включая «?», «=», пробел.
В принципе, вы всегда можете выполнить сравнение строк в Python, предварительно конвертировав строки в один формат, к примеру, в нижний регистр (используем метод
str1 = "apple" str2 = "Apple" str2.lower() print(str1 == str1) True
Применение оператора «равенство»
Мы можем проверить, равны ли строки, посредством оператора
print("строка1" == "строка2") False
Естественно, строки не являются равными, т. к. выполняется точное сравнение в Python. Неравными будут и те строки, которые содержат одинаковые, но переставленные местами символы. В последнем случае есть выход: превратить нашу строку в список, отсортировать, сравнить и вывести содержимое:
strA = "abcde" strB = "abdec" print(sorted(list(strA)) == sorted(list(strB))) print(sorted(list(strA))) print(sorted(list(strB))) True ['a', 'b', 'c', 'd', 'e'] ['a', 'b', 'c', 'd', 'e']
Использование оператора «не равно»
Оператор
print("abc" != "zxc") True
Разумеется, результат True, ведь abc не равно zxc.
Применение операторов «больше или равно/меньше или равно»
Если при использовании оператора
print("abc" <= "bcd") True
В нашем случае «abc» меньше.
Аналогично работает и оператор
print("abc" >= "abc") True
В этой ситуации очевидно, что строки равны.