Пробуйте:
>>> import re
>>> data = ['15', 5, '34k', 'de', '120', 40, 18.6, 've', 'v8', 'v200', 'a10c', 'a5b']
# Выбираем числа и строки, с чисел начинающиеся
>>> numbers_mix = [i for i in data if str(i)[0].isdigit()]
>>> numbers_mix
['15', 5, '34k', '120', 40, 18.6]
# Сортируем
>>> digit = '(\d+)'
>>> numbers_mix_sort = sorted(numbers_mix, key=lambda x: int(re.split(digit, str(x))[1]))
>>> numbers_mix_sort
[5, '15', 18.6, '34k', 40, '120']
# Выбираем оставшиеся строки
>>> text_mix = [i for i in data if i not in numbers_mix]
>>> text_mix
['de', 've', 'v8', 'v200', 'a10c', 'a5b']
#Сортируем
>>> text_mix_sort = sorted(text_mix, key=lambda x: (re.split(digit, x)[0], int(re.split(digit, x+'0')[1])))
>>> text_mix_sort
['a5b', 'a10c', 'de', 'v8', 'v200', 've']
# Итого
>>> result = numbers_mix_sort + text_mix_sort
>>> result
[5, '15', 18.6, '34k', 40, '120', 'a5b', 'a10c', 'de', 'v8', 'v200', 've']