logo

Kā salīdzināt divus sarakstus Python

Python nodrošina vairākus veidus, kā salīdzināt abus sarakstus. Salīdzināšana ir process, kurā datu vienības tiek salīdzinātas ar citu saraksta datu vienumu neatkarīgi no tā, vai tie ir vienādi vai nē.

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

Divu sarakstu salīdzināšanas metodes ir norādītas zemāk.

  • Funkcija cmp().
  • Funkcija set() un operators ==
  • Funkcija sort() un operators ==
  • Funkcija collection.counter()
  • Funkcija samazināt () un map ()

Funkcija cmp().

The Python cmp() funkcija salīdzina divus Python objektus un atgriež veselu skaitļu vērtības -1, 0, 1 atbilstoši salīdzinājumam.

Piezīme. Tas netiek izmantots Python 3.x versijā.

Funkcija set() un operators ==

Python set() funkcija manipulēt ar sarakstu komplektā, nerūpējoties par elementu secību. Turklāt, lai salīdzinātu saraksta datu vienības, mēs izmantojam operatoru vienāds ar operatoru (==). Sapratīsim šādu piemēru.

ipconfig uz Ubuntu

Piemērs -

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

Izvade:

 The list1 and list2 are equal 

Paskaidrojums:

Iepriekš minētajā piemērā mēs esam paziņojuši, ka šie divi saraksti ir jāsalīdzina viens ar otru. Mēs pārveidojām šos sarakstus komplektā un salīdzinājām katru elementu ar == operatora palīdzību. Visi elementi ir vienādi abos sarakstos, tad, ja bloks tiek izpildīts un izdrukāts rezultāts.

apakšvirkne bash

Sort() metode ar == operatoru

Python kārtot () funkciju izmanto sarakstu kārtošanai. Vienam un tam pašam saraksta elementam ir tāda pati indeksa pozīcija, ko tas nozīmē; saraksti ir vienādi.

Piezīme. Izmantojot metodi sort(), mēs varam nodot saraksta vienumus jebkurā secībā, jo mēs sarakstu kārtojam pirms salīdzināšanas.

Sapratīsim šādu piemēru -

Piemērs -

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

Izvade:

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

Funkcija collection.counter()

Kolekcijas modulis nodrošina skaitītājs (), kas efektīvi salīdzina sarakstu. Tas saglabā datus vārdnīcas formātā un uzskaita saraksta vienumu biežumu.

mūrnieka formula

Piezīme. Šajā funkcijā saraksta elementu secībai nav nozīmes.

Piemērs -

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

Izvade:

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

Samazināt () un map ()

The karte () funkcija pieņem funkciju un Python iterējamo objektu (saraksts, virkne, virkne utt.) kā argumentus un atgriež kartes objektu. Funkcija ievieš katru saraksta elementu un rezultātā atgriež iteratoru.

Turklāt The samazināt () metode rekursīvi realizē doto funkciju iterējamam objektam.

Šeit mēs izmantosim abas metodes kombinācijā. The karte () funkcija ieviestu funkciju (tā var būt lietotāja definēta vai lambda funkcija) katram iterējamam objektam un samazināt () funkciju, kas tiktu piemērota rekursīvā veidā.

Piezīme. Mums ir jāimportē functool modulis, lai izmantotu funkciju samazināt().

Sapratīsim šādu piemēru.

Piemērs -

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

Izvade:

java uz json objektu
 The list1 and list2 are not the same The list1 and list3 are the same 

Šajā sadaļā mēs esam apskatījuši dažādas metodes divu Python sarakstu salīdzināšanai.