Подробное объяснение
1️⃣Функция sorted выполняет посимвольное сравнение строк по кодам символов без учёта числовых значений внутри текста.
2️⃣Первые три символа img у всех элементов совпадают, а на четвёртой позиции символ 1 у строк img10.png и img100.png меньше символа 9 у img9.png, поэтому img9.png сразу отправляется в конец.
3️⃣Между собой img10.png и img100.png совпадают в первых пяти символах, а на шестой позиции точка с кодом 46 оказывается меньше нуля с кодом 48.
4️⃣В результате первым идёт img10.png, вторым становится img100.png, а последним остаётся img9.png.
5️⃣Итоговый вывод на экран: ['img10.png', 'img100.png', 'img9.png'].
Почему это важно
Стандартная сортировка нарушает ожидаемый числовой порядок при обработке файлов, логов или кадров с номерами без ведущих нулей. Для «естественного» порядка число достают ключом сортировки: sorted(files, key=lambda f: int("".join(c for c in f if c.isdigit()))) вернёт ['img9.png', 'img10.png', 'img100.png'].
Post #4919
116