Python | Índices de lista ordenada de elementos de lista

La clasificación es una construcción común y se han discutido muchas variaciones. Pero a veces, necesitamos realizar la clasificación en la lista de listas y, además, solo necesitamos encontrar el orden en que aparece el elemento antes de clasificarlo . Averigüemos cómo obtener índices ordenados en una lista de listas.

Método #1: Usar la comprensión de listas +enumerate() + sort()

La combinación de las 3 funciones anteriores se puede utilizar para realizar esta tarea en particular. En esto, realizamos la clasificación tomando tripletes que consisten en elementos y coordenadas de fila y columna y los devolvemos en el segundo paso.

# Python3 code to demonstrate
# Indices of sorted list of list elements
# using List comprehension + enumerate() + sort()
  
# initializing list
test_list = [[4, 5, 1],
             [9, 3, 2],
             [8, 6]]
  
# printing original list
print("The original list : " + str(test_list))
  
# using List comprehension + enumerate() + sort()
# Indices of sorted list of list elements
res = [(i, j) for i, x in enumerate(test_list)
                     for j, k in enumerate(x)]
  
res.sort(key = lambda ij: test_list[ij[0]][ij[1]]) 
  
# print result
print("The indices of sorted order are : " + str(res))
Producción :

La lista original: [[4, 5, 1], [9, 3, 2], [8, 6]]
Los índices ordenados son: [(0, 2), (1, 2), (1, 1), (0, 0), (0, 1), (2, 1), (2, 0), (1, 0)]

Método #2: Usar sorted()+ lambda

La tarea realizada anteriormente se puede realizar como argumentos para la función ordenada y la función lambda realiza la tarea de la función de comprensión de listas como se indicó anteriormente.

# Python3 code to demonstrate
# Indices of sorted list of list elements
# using sorted() + lambda
  
# initializing list
test_list = [[4, 5, 1],
             [9, 3, 2],
             [8, 6]]
  
# printing original list
print("The original list : " + str(test_list))
  
# using sorted() + lambda
# Indices of sorted list of list elements
res = sorted([(i, j) for i, x in enumerate(test_list)
                            for j, k in enumerate(x)],
             key = lambda ij: test_list[ij[0]][ij[1]])
  
# print result
print("The indices of sorted order are : " + str(res))
Producción :

La lista original: [[4, 5, 1], [9, 3, 2], [8, 6]]
Los índices ordenados son: [(0, 2), (1, 2), (1, 1), (0, 0), (0, 1), (2, 1), (2, 0), (1, 0)]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *