Quero pegar duas listas e encontrar os valores que aparecem em ambas. a = [1, 2, 3, 4, 5] b = [9, 8, 7, 6, 5] returnMatches(a, b)retornaria [5], por exemplo. Como posso comparar duas listas em python e retornar correspondências find: QuestionsComo posso comparar duas listas em python e retornar correspondências StackOverflow: Questions
Este artigo trata da tarefa de verificar se duas listas não ordenadas contêm elementos exatamente semelhantes em posições exatamente semelhantes, ou seja, verificar se duas listas são exatamente iguais. Este é um utilitário bastante útil e pode ser usado na programação do dia-a-dia. Método 1: Usar list.sort()e ==operador Resultado : A primeira lista é: [1, 2, 4, 3, 5] A segunda lista é: [1, 2, 4, 3, 5] As listas são idênticasMétodo 2: Usandocollections.Counter() Resultado : A primeira lista é: [1, 2, 4, 3, 5] A segunda lista é: [1, 2, 4, 3, 5] As listas são idênticas Método 3: Usandosum() + zip() + len() Resultado : A primeira lista é: [1, 2, 4, 3, 5] A segunda lista é: [1, 2, 4, 3, 5] As listas são idênticasMétodo 4: usandoreduce() + map() Resultado : A primeira lista é: [1, 2, 4, 3, 5] A segunda lista é: [1, 2, 4, 3, 5] As listas são idênticas
Tempo estimado de leitura: 2 atas Muitas vezes vai ser-lhe pedido para comparar listas, e você precisa de uma maneira rápida para completar. Aqui vamos percorrer três maneiras de completar isto, se você tiver mais comentários abaixo.
Um simples loop pode ajudá-lo a encontrar dados que são comuns a duas listas: # comparar para valores semelhantes lista1 = ["1", "2", "3", "4"] lista2 = ["1", "2", "3", "4", "5"] para i na lista1: para j na lista2: se i na lista j: imprimir(i)que cede: 1 2 3 4
Talvez haja momentos em que você deseje encontrar apenas os valores que estão em uma lista e não na outra. Abaixo usamos uma linha de código usando a compreensão de lista, que faz o mesmo que um loop: lista1 = ["1", "2", "3", "4"] lista2 = ["1", "2", "3", "4", "5"] para o item em [x para x na lista2 se x não estiver na lista1]: imprimir(item)o que dá o resultado de: 5
A terceira via utiliza conjuntos python, que essencialmente encontra a intersecção entre duas listas, como um diagrama Venn. Aqui usamos o conjunto para encontrar os valores que não são comuns a cada lista usando a subtração: lista1 = ["1", "2", "3", "4"] lista2 = ["1", "2", "3", "4", "5"] a = set(list1) b = set(list2) c = b-a imprimir(c)o que te dá: {'5'}Alternativamente, você poderia encontrar o que é comum a ambos: e o seu resultado será: {'1', '3', '4', '2'}Lembre-se que a utilização de conjuntos irá devolvê-los sem ordem, se você quiser que eles sejam encomendados, então aplique o seguinte ao código acima: a = set(list1) b = set(list2) c = a.intersecção(b) d=sorted(c) impressão(tipo(d)) imprimir(d)e a saída será: <class 'list'> ['1', '2', '3', '4']Uma coisa a notar é que o método classificado acima retorna o conjunto como uma lista e não como um conjunto. Há muitos recursos online onde você pode aprender sobre conjuntos.
Se gostaria de subtrair os elementos iguais: uma_lista = ['oi', 'bem', 'certo'] outra_lista = ['oi', 'belo', 'jeito'] iguais = [elemento for elemento in uma_lista if elemento in outra_lista] print(iguais) Resultado ['oi']Se gostaria de retornar somente a interseção de todas as letras contidas nas listas: lista1 = [] lista2 = [] uma_lista = ['oi', 'bem', 'certo'] outra_lista = ['oi', 'belo', 'jeito'] for pos, palavras in enumerate(uma_lista): lista1 += palavras for pos, palavras in enumerate(outra_lista): lista2 += palavras lista1 = set(lista1) lista2 = set(lista2) print(lista1-lista2) Resultado: {'b', 't', 'e', 'i', 'o'} |