logo

Jak porównać dwie listy w Pythonie

Python udostępnia wiele sposobów porównywania obu list. Porównanie to proces polegający na porównaniu elementów danych z innym elementem danych na liście, niezależnie od tego, czy są takie same, czy nie.

 list1 - [11, 12, 13, 14, 15] list2 - [11, 12, 13, 14, 15] Output - The lists are equal 

Poniżej podano metody porównywania dwóch list.

  • Funkcja cmp().
  • Funkcja set() i operator ==
  • Funkcja sort() i operator ==
  • Funkcja kolekcja.licznik().
  • Funkcje redukcji() i map().

Funkcja cmp().

The Pyton cmp() porównuje dwa obiekty Pythona i zwraca wartości całkowite -1, 0, 1 zgodnie z porównaniem.

Uwaga - nie używa się go w wersji Python 3.x.

Funkcja set() i operator ==

Pyton ustawić() funkcjonować manipuluj listą w zestawie, nie dbając o kolejność elementów. Poza tym używamy operatora równości (==) do porównywania elementów danych na liście. Rozumiemy następujący przykład.

Przykład -

 list1 = [11, 12, 13, 14, 15] list2 = [12, 13, 11, 15, 14] a = set(list1) b = set(list2) if a == b: print('The list1 and list2 are equal') else: print('The list1 and list2 are not equal') 

Wyjście:

 The list1 and list2 are equal 

Wyjaśnienie:

W powyższym przykładzie zadeklarowaliśmy, że dwie listy mają być ze sobą porównywane. Przekonwertowaliśmy te listy na zbiór i porównaliśmy każdy element za pomocą operatora ==. Wszystkie elementy są równe na obu listach, więc jeśli blok zostanie wykonany i wydrukowany zostanie wynik.

Metoda sort() z operatorem ==

Pyton sortować() funkcja służy do sortowania list. Elementy tej samej listy mają tę samą pozycję indeksu; listy są równe.

Uwaga - W metodzie sort() możemy przekazywać elementy listy w dowolnej kolejności, ponieważ sortujemy listę przed porównaniem.

Rozumiemy następujący przykład -

Przykład -

 import collections list1 = [10, 20, 30, 40, 50, 60] list2 = [10, 20, 30, 50, 40, 70] list3 = [50, 10, 30, 20, 60, 40] # Sorting the list list1.sort() list2.sort() list3.sort() if list1 == list2: print('The list1 and list2 are the same') else: print('The list1 and list3 are not the same') if list1 == list3: print('The list1 and list2 are not the same') else: print('The list1 and list2 are not the same') 

Wyjście:

 The list1 and list3 are not the same The list1 and list2 are not the same 

Funkcja kolekcja.licznik().

Moduł kolekcji udostępnia lada(), które skutecznie porównują listę. Przechowuje dane w formacie słownikowym: i zlicza częstotliwość elementów listy.

Uwaga - Kolejność elementów listy nie ma w tej funkcji znaczenia.

Przykład -

 import collections list1 = [10, 20, 30, 40, 50, 60] list2 = [10, 20, 30, 50, 40, 70] list3 = [50, 10, 30, 20, 60, 40] if collections.Counter(list1) == collections.Counter(list2): print('The lists l1 and l2 are the same') else: print('The lists l1 and l2 are not the same') if collections.Counter(list1) == collections.Counter(list3): print('The lists l1 and l3 are the same') else: print('The lists l1 and l3 are not the same') 

Wyjście:

 The lists list1 and list2 are not the same The lists list1 and list3 are the same 

Redukcja() i map()

The mapa() funkcja przyjmuje funkcję i obiekt iterowalny w języku Python (lista, krotka, ciąg znaków itp.) jako argumenty i zwraca obiekt mapy. Funkcja implementuje każdy element listy i w rezultacie zwraca iterator.

Poza tym The zmniejszyć() metoda implementuje daną funkcję do iterowalnego obiektu rekurencyjnie.

Tutaj użyjemy obu metod w połączeniu. The mapa() funkcja zaimplementuje tę funkcję (może to być funkcja zdefiniowana przez użytkownika lub funkcja lambda) do każdego iterowalnego obiektu, a zmniejszyć() zajmij się tą funkcją, która miałaby zastosowanie w sposób rekurencyjny.

Uwaga - Aby skorzystać z funkcji redukcji(), musimy zaimportować moduł functool.

Rozumiemy następujący przykład.

Przykład -

 import functools list1 = [10, 20, 30, 40, 50] list2 = [10, 20, 30, 50, 40, 60, 70] list3 = [10, 20, 30, 40, 50] if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list2), True): print('The list1 and list2 are the same') else: print('The list1 and list2 are not the same') if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list3), True): print('The list1 and list3 are the same') else: print('The list1 and list3 are not the same') 

Wyjście:

 The list1 and list2 are not the same The list1 and list3 are the same 

W tej sekcji omówiliśmy różne metody porównywania dwóch list w Pythonie.