Ordenar una lista por índices

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Ordenar una lista basada en otra lista que contiene los índices deseados es una tarea común en la programación. En este desafío, tendrás la tarea de crear una función que tome dos listas como argumentos y devuelva una nueva lista ordenada según los índices de la segunda lista.

Ordenar una lista por índices

Escribe una función sort_by_indexes(lst, indexes, reverse=False) que tome dos listas como argumentos y devuelva una nueva lista ordenada según los índices de la segunda lista. La función debe tener los siguientes parámetros:

  • lst: Una lista de elementos a ordenar.
  • indexes: Una lista de enteros que representan los índices deseados para ordenar la lst.
  • reverse: Un parámetro booleano opcional que, cuando se establece en True, ordena la lista en orden inverso.

La función debe devolver una nueva lista ordenada según los índices de la segunda lista.

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']

Resumen

En este desafío, se te encomendó crear una función que ordene una lista basada en otra lista que contiene los índices deseados. Al utilizar las funciones zip() y sorted(), pudiste combinar y ordenar las dos listas basadas en los valores de indexes. Luego, utilizaste una comprensión de lista para obtener el primer elemento de cada par del resultado y devolver la lista ordenada.