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))
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))
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