Dada una lista de listas, escriba un programa de Python para eliminar todas las sublistas repetidas (también con diferente orden) de la lista dada.
Ejemplos:
Input : [[1], [1, 2], [3, 4, 5], [2, 1]] Output : [[1], [1, 2], [3, 4, 5]] Input : [['a'], ['x', 'y', 'z'], ['m', 'n'], ['a'], ['m', 'n']] Output : [['a'], ['x', 'y', 'z'], ['m', 'n']]
Enfoque n.º 1: Comprensión de conjuntos + Desempaquetado
Nuestro primer enfoque es utilizar la comprensión de conjuntos con tupla ordenada . En cada iteración en la lista, convertimos la sublista actual en una tupla ordenada y devolvemos un conjunto de todas estas tuplas, que a su vez elimina todas las apariciones repetidas de las sublistas y, por lo tanto, elimina todas las sublistas reorganizadas repetidas.
# Python3 program to Remove repeated # unordered sublists from list def Remove(lst): return ([list(i) for i in {*[tuple(sorted(i)) for i in lst]}]) # Driver code lst = [[1], [1, 2], [3, 4, 5], [2, 1]] print(Remove(lst))
[[1, 2], [3, 4, 5], [1]]
Enfoque n. ° 2: usar map() con tuplas ordenadas y establecidas .
# Python3 program to Remove repeated # unordered sublists from list def Remove(lst): return list(map(list, (set(map(lambda x: tuple(sorted(x)), lst))))) # Driver code lst = [[1], [1, 2], [3, 4, 5], [2, 1]] print(Remove(lst))
[[1, 2], [3, 4, 5], [1]]
Con mantener el orden –
Enfoque n. ° 3: usar tupla ordenada como hash
Primero, inicializamos una lista vacía como ‘res’ y un conjunto como ‘check’. Ahora, para cada sublista en la lista, convierta la sublista en una tupla ordenada y guárdela en ‘hsh’. Luego verifique si hsh está presente en el control o no. De lo contrario, agregue la sublista actual a ‘.res’ y ‘hsh’ a ‘check’. De esta forma sería más fácil mantener el orden de las sublistas.
# Python3 program to Remove repeated # unordered sublists from list def Remove(lst): res = [] check = set() for x in lst: hsh = tuple(sorted(x)) if hsh not in check: res.append(x) check.add(hsh) return res # Driver code lst = [[1], [1, 2], [3, 4, 5], [2, 1]] print(Remove(lst))
[[1], [1, 2], [3, 4, 5]]
Publicación traducida automáticamente
Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA