Сортировка списка по индексам

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Сортировка списка на основе другого списка, содержащего желаемые индексы, является распространенной задачей в программировании. В этом испытании вам будет поручено создать функцию, которая принимает два списка в качестве аргументов и возвращает новый отсортированный список на основе индексов второго списка.

Сортировка списка по индексам

Напишите функцию sort_by_indexes(lst, indexes, reverse=False), которая принимает два списка в качестве аргументов и возвращает новый список, отсортированный на основе индексов второго списка. Функция должна иметь следующие параметры:

  • lst: Список элементов, которые нужно отсортировать.
  • indexes: Список целых чисел, представляющих желаемые индексы для сортировки списка lst.
  • reverse: Необязательный логический параметр, который, когда установлен в True, сортирует список в обратном порядке.

Функция должна возвращать новый список, отсортированный на основе индексов второго списка.

def sort_by_indexes(lst, indexes, reverse=False):
  return [val for (_, val) in sorted(zip(indexes, lst), key=lambda x: \
          x[0], reverse=reverse)]
a = ['eggs', 'bread', 'oranges', 'jam', 'apples','milk']
b = [3, 2, 6, 4, 1, 5]
sort_by_indexes(a, b) ## ['apples', 'bread', 'eggs', 'jam','milk', 'oranges']
sort_by_indexes(a, b, True)
## ['oranges','milk', 'jam', 'eggs', 'bread', 'apples']

Резюме

В этом испытании вам было поручено создать функцию, которая сортирует список на основе другого списка, содержащего желаемые индексы. Используя функции zip() и sorted(), вы смогли объединить и отсортировать два списка на основе значений indexes. Затем вы использовали списочное выражение, чтобы получить первый элемент каждой пары из результата и вернули отсортированный список.