Em Python, determinar se elementos de uma lista existem em outra é essencial para várias tarefas de manipulação de dados. Este artigo explora diferentes métodos para testar essa sobreposição, avaliando sua eficiência e fornecendo práticas recomendadas.
1. Expressão do gerador
any(i in a for i in b)
Este método itera por uma lista e verifica a associação na outra, retornando True se uma correspondência for encontrado. Sua complexidade de tempo é O(n), onde n é o comprimento da lista maior.
2. Definir interseção
bool(set(a) & set(b))
Essa abordagem converte ambas as listas em conjuntos e encontra sua interseção. Se a interseção não estiver vazia, ela retornará True. A complexidade de tempo do pior caso para isso é O(n m), onde n e m são os comprimentos das listas.
3. Interseção de conjunto híbrido
a = set(a)
any(i in a for i in b)
Este método converte apenas uma lista em um conjunto e itera pela outra, verificando a associação do conjunto. Evita a criação de conjuntos intermediários, tornando-a mais rápida que a tradicional interseção de conjuntos.
4. Método isdisjoint
not set(a).isdisjoint(b)
Esta abordagem usa o método isdisjoint de conjuntos congelados para determinar se eles têm algum elemento comum. Caso contrário, o resultado será Falso; caso contrário, é verdadeiro.
Pior caso:
Na maioria dos casos, o isdisjoint O método é o mais rápido, pois se beneficia de verificações de associação definidas em tempo constante.
Melhor caso para expressão do gerador:
Fatores a serem considerados:
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3