Divu sarakstu krustojums nozīmē, ka mums ir jāņem visi tie elementi, kas ir kopīgi abiem sākotnējiem sarakstiem, un jāsaglabā tie citā sarakstā. Tagad Python ir dažādi veidi, kā mēs varam veikt sarakstu krustojumu.
Piemēri:
Input : lst1 = [15, 9, 10, 56, 23, 78, 5, 4, 9] lst2 = [9, 4, 5, 36, 47, 26, 10, 45, 87] Output : [9, 10, 4, 5] Input : lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69] lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26] Output : [9, 11, 26, 28]>
1. metode:
Šī ir vienkāršākā metode, kurā mēs neesam izmantojuši nekādas iebūvētās funkcijas.
Python3
sed komanda
# Python program to illustrate the intersection> # of two lists in most simple way> def> intersection(lst1, lst2):> > lst3> => [value> for> value> in> lst1> if> value> in> lst2]> > return> lst3> # Driver Code> lst1> => [> 4> ,> 9> ,> 1> ,> 17> ,> 11> ,> 26> ,> 28> ,> 54> ,> 69> ]> lst2> => [> 9> ,> 9> ,> 74> ,> 21> ,> 45> ,> 11> ,> 63> ,> 28> ,> 26> ]> print> (intersection(lst1, lst2))> |
>
>
Izvade:
[9, 11, 26, 28]>
2. metode:
Šī metode ietver izmantošanu set() metode .
Python3
# Python program to illustrate the intersection> # of two lists using set() method> def> intersection(lst1, lst2):> > return> list> (> set> (lst1) &> set> (lst2))> # Driver Code> lst1> => [> 15> ,> 9> ,> 10> ,> 56> ,> 23> ,> 78> ,> 5> ,> 4> ,> 9> ]> lst2> => [> 9> ,> 4> ,> 5> ,> 36> ,> 47> ,> 26> ,> 10> ,> 45> ,> 87> ]> print> (intersection(lst1, lst2))> |
>
>
Izvade:
[9, 10, 4, 5]>
Iepriekš minētās programmas laika sarežģītība ir O(n), kur n ir garākā saraksta garums starp lst1 un lst2.
Programmas telpas sarežģītība ir O(n), kur n ir mazākā saraksta garums starp lst1 un lst2.
3. metode:
Šajā metodē mēs set() lielākais saraksts un pēc tam izmantojiet iebūvēto funkciju, ko sauc krustojums () lai aprēķinātu krustoto sarakstu. krustojums () ir pirmās klases komplekta daļa.
Python3
# Python program to illustrate the intersection> # of two lists using set() and intersection()> def> Intersection(lst1, lst2):> > return> set> (lst1).intersection(lst2)> > # Driver Code> lst1> => [> 4> ,> 9> ,> 1> ,> 17> ,> 11> ,> 26> ,> 28> ,> 28> ,> 26> ,> 66> ,> 91> ]> lst2> => [> 9> ,> 9> ,> 74> ,> 21> ,> 45> ,> 11> ,> 63> ]> print> (Intersection(lst1, lst2))> |
>
>
Izvade:
{9, 11}>
4. metode:
Izmantojot šo hibrīda metode programmas sarežģītība samazinās līdz O(n). Tas ir efektīvs veids, kā veikt tālāk norādīto programmu.
Python3
# Python program to illustrate the intersection> # of two lists> def> intersection(lst1, lst2):> > # Use of hybrid method> > temp> => set> (lst2)> > lst3> => [value> for> value> in> lst1> if> value> in> temp]> > return> lst3> # Driver Code> lst1> => [> 9> ,> 9> ,> 74> ,> 21> ,> 45> ,> 11> ,> 63> ]> lst2> => [> 4> ,> 9> ,> 1> ,> 17> ,> 11> ,> 26> ,> 28> ,> 28> ,> 26> ,> 66> ,> 91> ]> print> (intersection(lst1, lst2))> |
>
>
Izvade:
[9, 9, 11]>
5. metode:
Šeit tiek veikta krustošanās ar apakšsarakstiem citos sarakstos. Šeit mēs esam izmantojuši jēdzienu filtrs ().
Python3
# Python program to illustrate the intersection> # of two lists, sublists and use of filter()> def> intersection(lst1, lst2):> > lst3> => [> list> (> filter> (> lambda> x: x> in> lst1, sublist))> for> sublist> in> lst2]> > return> lst3> # Driver Code> lst1> => [> 1> ,> 6> ,> 7> ,> 10> ,> 13> ,> 28> ,> 32> ,> 41> ,> 58> ,> 63> ]> lst2> => [[> 13> ,> 17> ,> 18> ,> 21> ,> 32> ], [> 7> ,> 11> ,> 13> ,> 14> ,> 28> ], [> 1> ,> 5> ,> 6> ,> 8> ,> 15> ,> 16> ]]> print> (intersection(lst1, lst2))> |
>
>
Darbojas: Filtra daļa ņem katru apakšsaraksta vienumu un pārbauda, vai tas ir avota sarakstā. Saraksta izpratne tiek izpildīta katram apakšsarakstam sarakstā2.
Izvade:
[[13, 32], [7, 13, 28], [1, 6]]>
6. metode: redukcijas ():
Algoritms:
- Importējiet samazināšanas funkciju no functools moduļa.
- Definējiet divus sarakstus.
- Inicializējiet mainīgo krustojumu ar tukšu sarakstu.
- Izmantojiet samazināšanas funkciju, lai atkārtotu lst1 elementus.
- Lambda funkcijā pārbaudiet, vai pašreizējais elements ir lst2 un vēl nav krustojumu sarakstā.
- Ja tā ir, pievienojiet pašreizējo elementu krustojumu sarakstam.
- Atgriezt krustojumu sarakstu.
- Izdrukājiet krustojumu sarakstu.
Python3
from> functools> import> reduce> lst1> => [> 15> ,> 9> ,> 10> ,> 56> ,> 23> ,> 78> ,> 5> ,> 4> ,> 9> ]> lst2> => [> 9> ,> 4> ,> 5> ,> 36> ,> 47> ,> 26> ,> 10> ,> 45> ,> 87> ]> intersection> => reduce> (> lambda> acc, x: acc> +> [x]> if> x> in> lst2> and> x> not> in> acc> else> acc, lst1, [])> print> (intersection)> #This code is contributed by Rayudu.> |
>
>Izvade
[9, 10, 5, 4]>
Laika sarežģītība: O(n^2), kur n ir lst1 garums.
Telpas sarežģītība: O(n), kur n ir lst1 garums.