Почему в Python
"apple" > "animal" возвращает True, а "Apple" < "apple" — тоже True? Всё дело в лексикографическом порядке.Python не просто знает алфавит, он смотрит на Unicode-код каждого символа.
✅ Сравнение идет посимвольно: первая пара, вторая и т.д.
✅ Как только найдено различие — результат готов.
✅ Если одна строка — префикс другой (напр.
"cat" и `"catastrophe"`), то та, что короче, считается «меньшей».Любая последовательность в Python (списки, кортежи, байтовые строки) сравнивается точно так же — индекс за индексом.
Пример с кортежами:
x = (45, 1, 13)
y = (45, 7, 4)
print(x < y) # True, потому что на индексе [1] единица меньше семерки.
Это свойство Python безумно полезно, когда нужно отсортировать данные по нескольким критериям сразу. Просто упакуйте их в кортежи.
Пример: Сортируем студентов по году выпуска, а затем по фамилии:
students = [
(1978, "Little"),
(1978, "Gonzalez"),
(1977, "Anders"),
]
Python сначала сравнит годы, а при равенстве — фамилии sorted_students = sorted(students)
Результат: Anders (1977), затем Gonzalez (1978), затем Little (1978)
Главные выводы:
1. Заглавные буквы в Unicode идут раньше строчных. Чтобы сортировка была честной, используйте
.lower().2. Вы не можете сравнить список и кортеж или строку и число — Python выдаст
TypeError.3. Если нужно отсортировать объекты по приоритету, создайте список кортежей
(приоритет, объект).📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
