Как отсортировать список, состоящий из чисел и строк?
Есть некий список, состоящий из чисел и строк. Нужно создать новый список, который будет содержать все числа из первого списка, отсортированные по возрастанию, но не содержать строки (т.е. все строки нужно пропустить). Знаю как сделать, используя перебор в цикле, но интересует более продуктивный и лаконичный подход, если такой имеется)
list = [10, 15, 2, 1, 4, '', 6, 6, '', 12, 5, 4]
Вывод должен быть следующим:
new_list = [1, 2, 4, 4, 5, 6, 6, 10, 12, 15]
Ответы (1 шт):
Автор решения: Dmitry
→ Ссылка
Через list comprehensions
Только для int
list_ = [10, 15, 2, 1, 4, '', 6, 6, '', 12, 5, 4]
new_list = sorted([i for i in list_ if isinstance(i, int)])
print(new_list)
#OUT
# [1, 2, 4, 4, 5, 6, 6, 10, 12, 15]
Если нужны и другие числа, например, вещественные, можно расширить проверку
types_for_check = (int, float)
list_ = [10, 15, 2, 1, 4, '', 6, 6, '', 12, 5, 4, 0.1, 9.5]
new_list = sorted([i for i in list_ if isinstance(i, types_for_check)])
print(new_list)
# OUT
# [0.1, 1, 2, 4, 4, 5, 6, 6, 9.5, 10, 12, 15]
Только комплексные не смешивайте, а то ошибка в сортировке будет