Python | Eliminar sublistas repetidas de la lista dada

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))
Producción:

[[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))
Producción:

[[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))
Producción:

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

Deja una respuesta

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