Функции min()
и max()
в Python могут использоваться для работы со строками, сравнивая их символы в лексикографическом порядке. Этот порядок соответствует последовательности символов в таблице Unicode.
✔️ Что такое Unicode?
Unicode - это международный стандарт кодирования символов, который присваивает уникальный числовой код каждому символу (буквам, цифрам, знакам, эмодзи и т.д.).
Изучить таблицу Unicode, вы можете тут или тут.
Чтобы понять, как работают min()
и max()
со строками, нужно знать порядок символов в таблице Unicode. Вот общий порядок:
Пробел и специальные символы:
!
,»
,#
,$
,%
,&
,'
,(
,)
,*
,+
,,
‑
,.
,/
Цифры (
0-9
)Специальные символы:
;
,<
,=
,>
,?
,@
Заглавные латинские буквы (
A-Z
)Специальные символы:
[
,\
,]
,^
,_
,`
Строчные латинские буквы (
a-z
)Специальные символы:
{
,|
,}
,~
Заглавные русские буквы (
А-Я
)Строчные русские буквы (
а-я
)Эмодзи и другие символы
Пример:
print(ord('A')) # Вывод: 65 (код латинской буквы 'A')
print(ord('Я')) # Вывод: 1071 (код кириллической буквы 'Я')
print(ord('❤️')) # Вывод: 10084 (код эмодзи "сердце")
✔️ Примеры работы с min() и max()
1. Простые строки
Функции min()
и max()
находят символ с минимальным или максимальным кодом Unicode в строке:
print(min("яблоко")) # Вывод: 'б' (минимальный символ)
print(max("яблоко")) # Вывод: 'я' (максимальный символ)
2. Строки с пробелами
Если строка содержит пробелы, они учитываются как символы:
print(min("apple яблоко")) # Вывод: ' ' (пробел)
print(max("apple яблоко")) # Вывод: 'я'
3. Чувствительность к регистру
Заглавные буквы имеют меньший Unicode, чем строчные:
print(min("Apple")) # Вывод: 'A'
print(max("Apple")) # Вывод: 'p'
print(min("apple")) # Вывод: 'a'
print(max("apple")) # Вывод: 'p'
4. Сравнение слов
Если применить min()
или max()
к списку слов, будет выбран результат на основе первого символа каждого слова:
words = ["яблоко", "апельсин", "банан"]
print(min(words)) # Вывод: 'апельсин' (первая буква 'а')
print(max(words)) # Вывод: 'яблоко' (первая буква 'я')
5. Слова с одинаковой первой буквой
Если несколько слов начинаются с одной и той же буквы, то сравнение идёт по следующим символам:
words = ["актер", "азбука", "автор"]
print(min(words)) # Вывод: 'автор'
print(max(words)) # Вывод: 'актер'
6. Использование параметра key
Функции min()
и max()
позволяют настроить правила сравнения через параметр key
. Например, сравнение по длине строки:
words = ["арбуз", "яблоко", "груша"]
print(max(words, key=len)) # Вывод: 'яблоко' (самая длинная строка)
print(min(words, key=len)) # Вывод: 'груша' (самая короткая строка)
Другой пример - сравнение строк независимо от регистра:
words = ["Арбуз", "апельсин", "Банан"]
print(min(words)) # Вывод: 'Арбуз' (учитывается регистр)
print(min(words, key=str.lower)) # Вывод: 'апельсин' (игнорируется регистр)
7. Работа с числами как строками
Если сравнивать строки, содержащие числа, результат зависит от их лексикографического порядка, а не от числового значения:
numbers = ["100", "2", "12"]
print(min(numbers)) # Вывод: '100'
print(max(numbers)) # Вывод: '2'
8. Эмодзи и символы
Эмодзи находятся в конце таблицы Unicode, поэтому они обычно считаются "максимальными":
print(min("Python ❤️")) # Вывод: ' ' (пробел)
print(max("Python ❤️")) # Вывод: '❤' (эмодзи "сердце")
✔️ Как узнать код символа?
Функция ord()
принимает один символ (букву, цифру или знак) и возвращает его числовое значение, которое соответствует этому символу в таблице символов Unicode. Это значение называется "код символа".
print(ord('A')) # Вывод: 65 (код символа 'A')
print(ord('a')) # Вывод: 97 (код символа 'a')
print(ord('0')) # Вывод: 48 (код символа '0')
print(ord('@')) # Вывод: 64 (код символа '@')
✔️ Как узнать символ по коду?
Функция chr()
— это обратная функция к ord()
. Она принимает числовое значение (код символа) и возвращает символ, который ему соответствует.
print(chr(65)) # Вывод: 'A'
print(chr(97)) # Вывод: 'a'
print(chr(48)) # Вывод: '0'
print(chr(64)) # Вывод: '@'
✔️ Интересные факты о Unicode
Обратная совместимость с ASCII: Первые 128 символов Unicode (коды 0-127) совпадают с таблицей ASCII (аски).
Диапазон кодов: Unicode охватывает миллионы символов, включая алфавиты всех языков мира, математические символы и даже эмодзи.
Специальные коды: Есть символы, которые выглядят одинаково, но имеют разные коды (например, кириллическая "А" и латинская "A"). Это важно учитывать при сравнении строк.