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