Параметр key
в sort
принимает функцию. Вы можете думать об этом следующим образом: если предоставляется key
, то итерация ввода будет отсортирована , как если бы key
был применен к каждому элементу .
tuples
сортируются по первому элементу, затем по второму и т. Д. В этом случае функция key преобразует все элементы в итерируемой для сортировки в tuples
, где первый элемент равен 0, если число находится в группе приоритетов, и 1 в противном случае.
Это означает, что, поскольку sort
по умолчанию возрастает, все номера приоритетов будут на первом месте, и они будут внутренне отсортированы в порядке возрастания.
Чтобы проиллюстрировать это, вы можете представить процесс следующим образом:
- Начните с
[8, 3, 1, 2, 5, 4, 7, 6]
- Применить
key
, чтобы получить:
[(1, 8), (0, 3), (1, 1), (0, 2), (0, 5), (1, 4), (0, 7), (1, 6)]
- Сортируйте результат в порядке возрастания, чтобы получить:
[(0, 2), (0, 3), (0, 5), (0, 7), (1, 1), (1, 4), (1, 6), (1, 8)]
- Возьмите соответствующие элементы исходных данных (в этом случае второй элемент
tuple
, хотя из-за того, что он основан на индексе, исходные элементы не нужно восстанавливать из выходных данных ключевой функции):
[2, 3, 5, 7, 1, 4, 6, 8]