Рубрики

Сортировать смешанный список в Python

Иногда, работая с Python, мы можем столкнуться с проблемой, из-за которой нам нужно отсортировать определенный список со смешанными типами данных. Что он содержит целые числа и строки, и нам нужно отсортировать каждое из них соответственно. Давайте обсудим некоторые способы решения этой проблемы.

Метод № 1: Использование sort() + компаратор

Эта проблема может быть решена с помощью функции сортировки, предоставляемой Python. Мы можем создать наш собственный компаратор, чтобы выполнить задачу смешанной сортировки.

# Python3 код для демонстрации работы
# Сортировать смешанный список
# используя sort () + компаратор

  
# функция сравнения для сортировки

def mixs(num):

    try:

        ele = int(num)

        return (0, ele, '')

    except ValueError:

        return (1, num, '')

  

  
# инициализировать список

test_list = [4, 'gfg', 2, 'best', 'is', 3]

  
# печать оригинального списка

print("The original list : " + str(test_list))

  
# Сортировать смешанный список
# используя sort () + компаратор

test_list.sort(key = mixs)

  
# результат печати

print("List after mixed sorting : " + str(test_list))

Выход :

The original list : [4, 'gfg', 2, 'best', 'is', 3]
List after mixed sorting : [2, 3, 4, 'best', 'gfg', 'is']

Способ № 2: Использование sorted() + key + lambda + isdigit()

Комбинация вышеуказанных функциональных возможностей также может быть использована для достижения решения этой проблемы. В этом мы просто сортируем список с помощью sorted (), используя ключевые функции, используя лямбда-функцию для разделения цифр с помощью isdigit ().

# Python3 код для демонстрации работы
# Сортировать смешанный список
# используя sorted () + key + lambda + isdigit ()

  
# инициализировать список

test_list = ['4', 'gfg', '2', 'best', 'is', '3']

  
# печать оригинального списка

print("The original list : " + str(test_list))

  
# Сортировать смешанный список
# используя sorted () + key + lambda + isdigit ()

res = sorted(test_list, key = lambda ele: (0, int(ele))

                        if ele.isdigit() else (1, ele))

  
# результат печати

print("List after mixed sorting : " + str(res))

Выход :

The original list : ['4', 'gfg', '2', 'best', 'is', '3']
List after mixed sorting : ['2', '3', '4', 'best', 'gfg', 'is']

Рекомендуемые посты:

Сортировать смешанный список в Python

0.00 (0%) 0 votes