Compruebe si una lista es un subconjunto de otra en Python

| | | | | | | | | | | | | | | | | | | | | | |

Una lista es un subconjunto de otra lista si todos los elementos de la primera son también elementos de la última. Por ejemplo, [1, 2] es un subconjunto de [1, 2, 3], pero [1,4] no lo es.

USE set.issubset() PARA COMPROBAR SI UNA LISTA ES UN SUBCONJUNTO DE OTRA LISTA Use set(list) para convertir las listas en conjuntos. Llame a set1.issubset(set2) para devolver un valor booleano que indica si set1 es un subconjunto de set2.

print(list1) OUTPUT [1, 2] print(list2) OUTPUT [ 1, 2, 3] set1 = set(lista1) Convertir listas en conjuntos set2 = set(lista2) is_subset = set1.issubset(set2) Comprobar si set1 se encuentra en set2 print(is_subset) OUTPUT True 

Python verifica si la lista es un subconjunto de otra

A veces nos encontramos con el problema de verificar si una lista es solo una extensión de la lista, es decir, solo un superconjunto de una lista. Este tipo de problemas son bastante populares en la programación competitiva. Tener abreviaturas ayuda a la causa. Analicemos varias formas de lograr esta tarea en particular.

Comprobar si una lista es un subconjunto de otra Usando all()

all() se usa para comprobar todos los elementos de un contenedor en una sola línea. Comprueba la existencia de todos los elementos de una lista en otra lista.

# Código de Python3 para demostrar # para comprobar si la lista es un subconjunto de otra # usando all() # inicializando la lista test_list = [9, 4, 5, 8, 10] sub_lista = [10, 5, 4] # imprimiendo listas originales print ("Lista original: " + str(test_list)) print ("Sublista original: " + str(sub_list)) # usando todo( ) para # verificar el subconjunto de la lista flag = 0 if(all(x in test_list for x in sub_list)): flag = 1 # resultado de la impresión if (flag): print ("Sí, la lista es un subconjunto de otra".) else: print ("No, la lista no es un subconjunto de otra") 

Salida:

Lista original: [9, 4, 5, 8, 10] Sublista original: [ 10, 5, 4] Sí, la lista es un subconjunto de otra.

Comprueba si una lista es un subconjunto de otra usando set.issubset()

La forma más utilizada y recomendada para buscar una sublista. Esta función está hecha a la medida para realizar la tarea particular de verificar si una lista es un subconjunto de otra.

# Código de Python3 para demostrar # verificar si la lista es un subconjunto de otra # usando issubset() # inicializando list test_list = [9, 4, 5, 8, 10] sub_list = [10, 5] # imprimiendo listas originales print ("Lista original: " + str(test_list)) print ("Sublista original: " + str(sub_list) )) # usar issubset() para # comprobar el subconjunto de la lista flag = 0 if(set(sub_list).issubset(set(test_list))): flag = 1 # imprimiendo el resultado if (flag): print ("Sí, la lista es subconjunto de otro.") else: print ("No, la lista no es un subconjunto de otro.") 

Salida:

Lista original: [9, 4, 5, 8, 10] Sublista original: [10, 5] Sí, la lista es un subconjunto de otra. 

Compruebe si una lista es un subconjunto de otra usando iteración y contador

Use la cantidad de elementos en ambas listas para verificar que la segunda lista es un subconjunto de la primera lista.

# Código de Python3 para demostrar # para verificar si la lista es un subconjunto de otra #Importación de colecciones import Counter def checkInFirst(a, b): #getting count count_a = Counter(a) count_b = Counter(b) # comprobando si el elemento existe en la segunda lista para clave en cuenta_b: si la clave no está en cuenta_a: devuelve Falso si cuenta_b[clave] > cuenta_b[clave]: devuelve Falso devuelve Verdadero # inicializando lista a = [1, 2,4,5] b = [1, 2,3] #Función de llamada res = verificar primero (a, b) #Impresión de lista print ("Lista original: " + str(a)) print ("Sublista original: " + str(b)) if res==True: print ("Sí, la lista es un subconjunto de otro") else: print ("No, la lista no es un subconjunto de otro") #Added by Paras Jain(everythingispossible) 

Salida :

Lista original: [1, 2, 4, 5] Sublista original: [1, 2, 3] No, la lista no es un subconjunto de otra. 

Comprobar si una lista es subconjunto de otra Usando set.intersection()

Otro método que trata con conjuntos es ver si la intersección de ambas listas es la sublista que somos comprobación. Esto confirma que una lista es un subconjunto de la otra.

# Código de Python3 para demostrar # verificar si la lista es un subconjunto de otra # usando la intersección() # inicializando la lista test_list = [9, 4, 5, 8, 10] sub_lista = [10, 5] # imprimiendo listas originales print ("Lista original: " + str(test_list)) print ("Sublista original: " + str(sub_list)) # usando la intersección() para # verificar subconjunto de lista flag = 0 if((set(sub_list) & set(test_list))== set(sub_list)): flag = 1 # resultado de impresión if (flag): print ("Sí, la lista es un subconjunto de otra." ) else: print ("No, la lista no es un subconjunto de otra") 

Salida:

Lista original: [9, 4, 5, 8, 10] Sublista original : [10, 5] Sí, la lista es un subconjunto de otra.

¿Cómo verificar si una lista es un subconjunto de otro Python?




¿Cómo puedo verificar si una lista es un subconjunto de otra?

Pregunta de StackOverflow

Necesito verificar si una list es un subconjunto de otro: un retorno booleano es todo lo que busco.

¿Es la prueba de igualdad en la lista más pequeña después de una intersección la forma más rápida de hacer esto? El rendimiento es de suma importancia dada la cantidad de conjuntos de datos que deben compararse.

Agregar más datos basados en discusiones:

¿Alguna de las listas será la misma para muchas pruebas? Funciona como uno de ellos es una tabla de búsqueda estática.

¿Tiene que ser una lista? No es así: la tabla de búsqueda estática puede ser cualquier cosa que funcione mejor. El dinámico es un dict del que extraemos las claves para realizar una búsqueda estática.

¿Cuál sería la solución óptima dado el escenario?

Respuesta:

Utilice subset" rel="noreferrer">set.issubset

Ejemplo:

a = {1,2} b = {1,2,3} a.issubset(b) # True 
a = {1, 2,4} b = {1 ,2,3} a.issubset(b) # Falso 


La función de desempeño que Python proporciona para esto es subset" rel="noreferrer">< código>conjunto.issubconjunto. Sin embargo, tiene algunas restricciones que hacen que no quede claro si es la respuesta a su pregunta.

Una lista puede contener elementos varias veces y tiene un orden específico. Un conjunto no. Además, los conjuntos solo funcionan en objetos hashable.

¿Está preguntando sobre un subconjunto o una subsecuencia (lo que significa que querrá un algoritmo de búsqueda de cadenas)? ¿Alguna de las listas será la misma para muchas pruebas? ¿Cuáles son los tipos de datos contenidos en la lista? Y de hecho, ¿debe ser una lista?

Tu otra publicación intersect a dict and list aclaró los tipos y obtuvo una recomendación para usar vistas de teclas de diccionario para su funcionalidad similar a un conjunto. En ese caso, se sabía que funcionaba porque las claves del diccionario se comportaban como un conjunto (tanto que antes de tener conjuntos en Python usábamos diccionarios). Uno se pregunta cómo el problema se volvió menos específico en tres horas.