logo

Pythona | Różnica między dwiema listami

W programowaniu w języku Python porównywanie dwóch list jest częstym zadaniem wymagającym wielu podejść. W tym artykule omówiono różne metody uzyskiwania odmienności między dwiema listami, zwiększając Twoją biegłość w obsłudze list i porównywaniu danych w Pyton . Dołącz do nas w tej wnikliwej podróży po różnych strategiach rozpoznawania różnic między listami.

Przykład



  Input:   list1 = [10, 15, 20, 25, 30, 35, 40] list2 = [25, 40, 35]   Output:   [10, 15, 20, 30]   Explanation:   resultant list = list1 - list2>

Notatka: Jeśli masz wiele takich samych elementów, to nie zadziała. W takim przypadku ten kod po prostu usunie te same elementy.
W takim przypadku możesz zachować liczbę każdego elementu na obu listach.

Sposoby porównywania dwóch list w Pythonie

Istnieją różne sposoby porównywania dwóch list w Pythonie. W tym miejscu omawiamy niektóre powszechnie stosowane metody porównywania dwóch list w Pythonie.

  • Użyj w metodzie
  • Korzystanie ze zrozumienia list
  • Używać ustawić() Funkcjonować
  • Używać Numpy
  • Za pomocą zamek błyskawiczny() Funkcjonować
  • Zliczaj wystąpienia za pomocą Lada

Python w słowie kluczowym do porównywania dwóch list w Pythonie

W tym przykładzie kod iteruje po elementach listy „li1” i dołącza każdy element do „temp3”, jeśli nie ma go na liście „li2”. Końcowy wynik w `temp3` zawiera elementy z `li1`, których nie ma w `li2`.



Python3






li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> temp3>=> []> for> element>in> li1:> >if> element>not> in> li2:> >temp3.append(element)> print>(temp3)>

>

>

Wyjście

[10, 15, 20, 30]>

Różnica między dwiema listami w Pythonie przy użyciu rozumienia list

W tym przykładzie kod tworzy zestaw „s” z elementów listy „li2”, a następnie generuje nową listę „temp3” zawierającą elementy z listy „li1”, których nie ma w zestawie „s”. Na koniec wypisuje elementy w „temp3”.

Python3




li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> s>=> set>(li2)> temp3>=> [x>for> x>in> li1>if> x>not> in> s]> print>(temp3)>

>

>

Wyjście

[10, 15, 20, 30]>

Znajdź różnicę między dwiema listami w Pythonie za pomocą set()

W tej metodzie jawnie konwertujemy listy na zestawy, a następnie po prostu redukujemy je za pomocą operatora odejmowania. Aby uzyskać więcej referencji, odwiedź plan zdjęciowy Zestawy w Pythonie . Jest to podobna technika, którą stosowaliśmy wcześniej. Jedyna różnica polega na tym, że zastąpiliśmy zagnieżdżone pętle zrozumienie listy składnia.

Python3

przekształć ciąg na int




li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> s>=> set>(li2)> temp3>=> [x>for> x>in> li1>if> x>not> in> s]> print>(temp3)>

>

>

Wyjście

[10, 15, 20, 30]>

Użyj Numpy do Porównaj dwie listy w Pythonie

The numpy.concatenate() funkcja łączy sekwencję tablic wzdłuż istniejącej osi. W tym przykładzie kod używa NumPy do tworzenia tablic `li1` i `li2`, znajduje ustawione różnice między nimi (`dif1` i `dif2`) i łączy te różnice w jedną listę (`temp3`), na koniec wyświetlając wynik.

Python3




import> numpy as np> li1>=> np.array([>10>,>15>,>20>,>25>,>30>,>35>,>40>])> li2>=> np.array([>25>,>40>,>35>])> dif1>=> np.setdiff1d(li1, li2)> dif2>=> np.setdiff1d(li2, li1)> temp3>=> np.concatenate((dif1, dif2))> print>(>list>(temp3))>

>

>

Wyjście

[10, 15, 20, 30]>

Porównaj dwie listy w Pythonie za pomocą funkcji zip().

W tym przykładzie kod porównuje odpowiednie elementy dwóch list, li1 i li2, i tworzy listę wartości logicznych wskazujących, czy elementy są równe. Funkcja „all” sprawdza, czy wszystkie elementy na liście wyników mają wartość True.

Python3




li1>=> [>10>,>15>,>20>]> li2>=> [>25>,>40>,>35>]> result>=> [a>=>=> b>for> a, b>in> zip>(li1, li2)]> print>(>all>(result))>

ciąg przycinania Java
>

>

Wyjście

False>

Porównaj dwie listy za pomocą licznika wystąpień

W tym przykładzie kod wykorzystuje klasę `Counter` z modułu `collections` do utworzenia liczników częstotliwości dla dwóch list, `li1` i `li2`. Następnie porównuje liczniki, aby sprawdzić, czy listy zawierają te same elementy z tą samą częstotliwością, przypisując wynik do `are_lists_equal`.

Python3




from> collections>import> Counter> li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> counter1>=> Counter(li1)> counter2>=> Counter(li2)> are_lists_equal>=> counter1>=>=> counter2> print>(are_lists_equal)>

>

>

Wyjście

False>