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
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))> |
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