Python | Comprobar si una lista anidada es un subconjunto de otra lista anidada

Dadas dos listas list1 y list2 , verifique si list2 es un subconjunto de list1 y devuelva True o False según corresponda.

Ejemplos:

Input : list1 = [[2, 3, 1], [4, 5], [6, 8]]
        list2 = [[4, 5], [6, 8]]
Output : True

Input : list1 = [['a', 'b'], ['e'], ['c', 'd']]
        list2 = [['g']]
Output : False

 
Analicemos algunos enfoques para resolver el problema.

Enfoque n.º 1: enfoque ingenuo
Tome una variable ‘existir’ que realiza un seguimiento de cada elemento, ya sea que esté presente en list1 o no. Comience un ciclo y en cada iteración ‘i’, verifique si el i- ésimo elemento está presente en list1. Si está presente, establezca exist en True; de ​​lo contrario, false.

# Python3 Program to Check is a nested 
# list is a subset of another nested list
  
def checkSubset(list1, list2):
    l1, l2 = list1[0], list2[0]
    exist = True
    for i in list2:
        if i not in list1:
            exist = False
    return exist
      
# Driver Code
list1 = [[2, 3, 1], [4, 5], [6, 8]]
list2 = [[4, 5], [6, 8]]
print(checkSubset(list1, list2))
Producción:

True

 
Enfoque n.º 2: usar el conjunto de Python
Convierta cada sublista de ambas listas anidadas dadas en tuplas, porque los conjuntos no pueden contener listas, ya que dependen de que sus elementos sean inmutables y las listas son mutables. Pero convertirlos a tupla funciona bien. Después de esto, simplemente verifique si el conjunto de list2 es un subconjunto de list1 o no.

# Python3 Program to Check is a nested 
# list is a subset of another nested list
  
def checkSubset(list1, list2):
    temp1 = []
    temp2 = []
    for i in list1:
        temp1.append(tuple(i))
    for i in list2:
        temp2.append(tuple(i))
      
    return set(temp2) < set(temp1)
      
# Driver Code
list1 = [[2, 3, 1], [4, 5], [6, 8]]
list2 = [[4, 5], [6, 8]]
print(checkSubset(list1, list2))
Producción:

True

 
Enfoque n.º 3: Usar todos y bucle for
Este método usa un bucle for para verificar si todos los elementos (usando all ) pertenecen a list1 o no.

# Python3 Program to Check is a nested 
# list is a subset of another nested list
  
def checkSubset(list1, list2):
    return all(x in list1 for x in list2)
      
# Driver Code
list1 = [[2, 3, 1], [4, 5], [6, 8]]
list2 = [[4, 5], [6, 8]]
print(checkSubset(list1, list2))
Producción:

True

 
Enfoque n.º 4: Uso de map()y__contains__
En este enfoque, usamos Python map()usando el operador de «verificación de contención» __contains__, verificando si los elementos de list1 están contenidos dentro de list2 o no.

# Python3 Program to Check is a nested 
# list is a subset of another nested list
  
def checkSubset(list1, list2):
    return all(map(list1.__contains__, list2))
      
# Driver Code
list1 = [[2, 3, 1], [4, 5], [6, 8]]
list2 = [[4, 5], [6, 8]]
print(checkSubset(list1, list2))
Producción:

True

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 *