data = ['elm13', 'elm9', 'elm0', 'elm1', 'Elm11', 'Elm2', 'elm10']
Давайте проанализируем данные. Емкость цифр всех элементов равна 2. И есть 3 буквы в общей литеральной части 'elm'
.
Таким образом, максимальная длина элемента равна 5. Мы можем увеличить это значение, чтобы убедиться (например, до 8).
Учитывая это, у нас есть однолинейное решение:
data.sort(key=lambda x: '{0:0>8}'.format(x).lower())
без регулярных выражений и внешних библиотек!
print(data)
>>> ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'elm13']
Объяснение:
for elm in data:
print('{0:0>8}'.format(elm).lower())
>>>
0000elm0
0000elm1
0000elm2
0000elm9
000elm10
000elm11
000elm13