"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso verificar se os elementos de uma lista se sobrepõem a outra em Python?

Como posso verificar se os elementos de uma lista se sobrepõem a outra em Python?

Publicado em 2024-11-08
Navegar:225

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

Testando sobreposição de lista em Python

Introdução

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.

Abordagens

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.

Comparação de eficiência

Pior caso:

  • Expressão do gerador: O(n)
  • Interseção de conjunto: O(n m)
  • Interseção de conjunto híbrido: O(n m)
  • Método isdisjoint: O(1)

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:

  • Quando os primeiros elementos das listas sobreposição. Nesse caso, a expressão do gerador pode retornar True rapidamente.

Fatores a serem considerados:

  • Tamanho da lista
  • Distribuição de elementos dentro das listas
  • Frequência de elementos compartilhados

Práticas recomendadas

  • Para listas pequenas (
  • Se as estruturas da lista forem previsíveis (por exemplo, classificadas), a expressão do gerador poderá ser mais rápida.
  • Quando houver uma diferença significativa de tamanho entre as listas, use o método isdisjoint com a lista menor como o primeiro argumento.
  • Para listas com poucos ou nenhum elemento compartilhado, o método isdisjoint é geralmente mais eficiente.
Declaração de lançamento Este artigo é reproduzido em: 1729382599 Se houver alguma violação, entre em contato com [email protected] para excluí -lo.
Tutorial mais recente Mais>

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