Python | Intersección de varias listas

Dadas dos listas de listas, escriba un programa Python para encontrar la intersección entre las dos listas dadas.

Ejemplos:

Input : lst1 = [['a', 'c'], ['d', 'e']]
        lst2 = [['a', 'c'], ['e', 'f'], ['d', 'e']]
Output : [['a', 'c'], ['d', 'e']]

Input : lst1 = [[1, 5, 7], [2, 3], [6, 9], [4, 8]]
        lst2 = [[9, 3], [2, 3], [6, 9]]
Output : [[2, 3], [6, 9]]

 
Enfoque #1: Ingenuo (Lista de comprensión)

El enfoque de fuerza bruta o ingenuo para encontrar la intersección de la lista de listas es usar la comprensión de listas o simplemente un bucle for .

# Python3 program to find 
# Intersection of list of lists
  
def intersection(lst1, lst2):
      
    return [item for item in lst1 if item in lst2]
              
# Driver code
lst1 = [['a', 'c'], ['d', 'e']]
lst2 = [['a', 'c'], ['e', 'f'], ['d', 'e']]
print(intersection(lst1, lst2))
Producción:

[['a', 'c'], ['d', 'e']]

 
Enfoque n. ° 2: usar Establecer intersection()

Este es un método eficiente en comparación con el enfoque ingenuo. Primero convertimos ambas listas de listas en listas de tuplas usando map() porque los conjuntos de Python son compatibles con tuplas, no con listas. Luego, simplemente encontramos Establecer intersection() de ambas listas.

# Python3 program to find 
# Intersection of list of list
  
def intersection(lst1, lst2):
    tup1 = map(tuple, lst1)
    tup2 = map(tuple, lst2) 
    return list(map(list, set(tup1).intersection(tup2)))
              
# Driver code
lst1 = [['a', 'c'], ['d', 'e']]
lst2 = [['a', 'c'], ['e', 'f'], ['d', 'e']]
print(intersection(lst1, lst2))
Producción:

[['d', 'e'], ['a', 'c']]

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 *