Python | Intersección de dos listas anidadas

Este artículo en particular tiene como objetivo lograr la tarea de cruzar dos listas, en las que cada elemento es en sí mismo una lista. Esta es también una utilidad útil ya que este tipo de tarea puede venir en la vida del programador si está en el mundo del desarrollo. Vamos a discutir algunas formas de lograr esta tarea.

Método 1: método ingenuo
Este es el método más simple para lograr esta tarea y utiliza el enfoque de fuerza bruta para ejecutar un ciclo y verificar si una lista contiene una lista similar a la otra lista.

# Python 3 code to demonstrate 
# find intersection of nested list
# using naive method
  
# initializing lists
test_list1 = [ [1, 2], [3, 4], [5, 6] ]
test_list2 = [ [3, 4], [5, 7], [1, 2] ]
  
# printing both lists 
print ("The original list 1 : " + str(test_list1))
print ("The original list 2 : " + str(test_list2))
  
# using naive method 
# to get list intersection
res_list = []
for i in test_list1:
    if i in test_list2:
        res_list.append(i)
  
# printing the intersection 
print ("The intersection of two lists is : " + str(res_list))

Producción :

The original list 1 : [[1, 2], [3, 4], [5, 6]]
The original list 2 : [[3, 4], [5, 7], [1, 2]]
The intersection of two lists is : [[1, 2], [3, 4]]

Método 2: Uso de la comprensión de listas
Podemos realizar una tarea similar a la discutida anteriormente en comparativamente menos no. de lineas Pero el método es similar al anterior, solo usa el enfoque de comprensión de lista para realizar la tarea.

# Python 3 code to demonstrate 
# find intersection of nested list
# using list comprehension
  
# initializing lists
test_list1 = [ [1, 2], [3, 4], [5, 6] ]
test_list2 = [ [3, 4], [5, 7], [1, 2] ]
  
# printing both lists 
print ("The original list 1 : " + str(test_list1))
print ("The original list 2 : " + str(test_list2))
  
# using list comprehension
# to get list intersection
res_list = [i for i in test_list1 if i in test_list2]
  
# printing the intersection 
print ("The intersection of two lists is : " + str(res_list))

Producción :

The original list 1 : [[1, 2], [3, 4], [5, 6]]
The original list 2 : [[3, 4], [5, 7], [1, 2]]
The intersection of two lists is : [[1, 2], [3, 4]]

Método 3: Usar set() + map()y&
El método más eficiente y recomendado para realizar esta tarea es usar la combinación de set()y map()para lograrlo. En primer lugar, al convertir las listas internas en tuplas usando el mapa, y las listas externas para configurar, el uso del operador & puede realizar la intersección del conjunto y, por lo tanto, realizar esta tarea. Además, si es necesario ingresar listas de forma de lista, podemos convertir los contenedores externos e internos nuevamente a la lista usando map().

# Python 3 code to demonstrate 
# find intersection of nested list
# using map() + set() + &
  
# initializing lists
test_list1 = [ [1, 2], [3, 4], [5, 6] ]
test_list2 = [ [3, 4], [5, 7], [1, 2] ]
  
# printing both lists 
print ("The original list 1 : " + str(test_list1))
print ("The original list 2 : " + str(test_list2))
  
# using map() + set() + &
# to get list intersection
res_set = set(map(tuple, test_list1)) & set(map(tuple, test_list2))
res_list = list(map(list, res_set))
  
# printing the intersection 
print ("The intersection of two lists is : " + str(res_list))

Producción :

The original list 1 : [[1, 2], [3, 4], [5, 6]]
The original list 2 : [[3, 4], [5, 7], [1, 2]]
The intersection of two lists is : [[1, 2], [3, 4]]

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 *