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>