Использование лямбда-функции в качестве ключа в сортировке - PullRequest
0 голосов
/ 12 декабря 2018

Может кто-нибудь объяснить, как работает этот код.Как функция isisnstance в лямбда-функции сортирует список

def db_sort(arr):
    return sorted(arr, key=lambda x: (isinstance(x,str) ,x))
db_sort(['a', 'w', 'u', 'y', 6, 2, 3, 4, 5])

output:

[2, 3, 4, 5, 6, 'a', 'u','w', 'y']

1 Ответ

0 голосов
/ 12 декабря 2018

Лямбда-функция создает кортежи логического значения и самого исходного значения.Таким образом, sorted применяется к следующему входу:

(True, 'a') (True, 'w') (True, 'u') (True, 'y') (False, 6) (False, 2) (False, 3) (False, 4) (False, 5)

Сначала он помещает записи с записью False, а затем элементы True (строки в этом примере).Затем он сортирует элементы False в логическом порядке после второй записи кортежа и элементы True также в логическом порядке.Думайте об этом как об иерархической сортировке.

Таким образом, вы получите

(False, 6) (False, 2) (False, 3) (False, 4) (False, 5) (True, 'a') (True, 'w') (True, 'u') (True, 'y')

после первого уровня сортировки и

(False, 2) (False, 3) (False, 4) (False, 5) (False, 6) (True, 'a') (True, 'u') (True, 'w') (True, 'y')

после второгоуровень.Таким образом, вы получите окончательный порядок вашего массива (полагаю, вы случайно пропустили 6).

[2, 3, 4, 5, 6, 'a', 'u', 'w', 'y']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...