"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo compruebo si los elementos de una lista se superponen con otra en Python?

¿Cómo compruebo si los elementos de una lista se superponen con otra en Python?

Publicado el 2024-11-08
Navegar:189

How Do I Check if Elements from One List Overlap with Another in Python?

Prueba de superposición de listas en Python

Introducción

En Python, determinar si los elementos de una lista existen en otra es esencial para diversas tareas de manipulación de datos. Este artículo explora diferentes métodos para probar esta superposición, evaluar su eficiencia y proporcionar mejores prácticas.

Enfoques

1. Expresión generadora

any(i in a for i in b)

Este método itera a través de una lista y verifica la pertenencia a la otra, devolviendo True si hay una coincidencia. encontró. Su complejidad temporal es O(n), donde n es la longitud de la lista más grande.

2. Establecer intersección

bool(set(a) & set(b))

Este enfoque convierte ambas listas en conjuntos y encuentra su intersección. Si la intersección no está vacía, devuelve Verdadero. La complejidad de tiempo en el peor de los casos para esto es O(n m), donde n y m son las longitudes de las listas.

3. Intersección del conjunto híbrido

a = set(a)
any(i in a for i in b)

Este método convierte solo una lista en un conjunto y recorre en iteración la otra, comprobando la pertenencia al conjunto. Evita la creación de conjuntos intermedios, haciéndolo más rápido que la intersección de conjuntos tradicional.

4. Método Isdisjoint

not set(a).isdisjoint(b)

Este enfoque utiliza el método isdisjoint de conjuntos congelados para determinar si tienen elementos comunes. Si no lo hacen, el resultado es Falso; de lo contrario, es Verdadero.

Comparación de eficiencia

Peor caso:

  • Expresión del generador: O(n)
  • Establecer intersección: O(n m)
  • Intersección de conjunto híbrido: O(n m)
  • Método Isdisjoint: O(1)

En la mayoría de los casos, el método isdisjoint El método es el más rápido ya que se beneficia de las comprobaciones de membresía establecidas en tiempo constante.

Mejor caso para Generator Expression:

  • Cuando los primeros elementos de las listas superposición. En este caso, la expresión del generador puede devolver Verdadero rápidamente.

Factores a considerar:

  • Tamaño de la lista
  • Distribución de elementos dentro de las listas
  • Frecuencia de elementos compartidos

Mejores prácticas

  • Para listas pequeñas (
  • Si las estructuras de la lista son predecibles (por ejemplo, ordenadas), la expresión del generador puede ser más rápida.
  • Cuando hay una diferencia de tamaño significativa entre las listas, use el método isdisjoint con la lista más pequeña como primer argumento.
  • Para listas con pocos o ningún elemento compartido, el método isdisjoint es generalmente más eficiente.
Declaración de liberación Este artículo se reproduce en: 1729382599 si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3