Pažiūrėkime, kaip sujungti du sąrašus naudojant skirtingus metodus Python . Ši operacija naudinga, kai turime daugybę elementų, kuriuos reikia apdoroti panašiu būdu, sąrašų.
Input: test_list1 = [1, 4, 5, 6, 5] test_list2 = [3, 5, 7, 2, 5] Output: [1, 4, 5, 6, 5, 3, 5, 7, 2, 5] Explanation: The output list is the list we get from Merging both the input list.>
Python prisijungti prie dviejų sąrašų
Žemiau pateikiami metodai, kuriuos aptarsime šiame straipsnyje:
java lambda
- Naiviojo metodo naudojimas
- Naudojant + operatorius
- Naudojant sąrašo supratimas
- Naudojant pratęsti () metodas
- Naudojant * operatorius
- Naudojant itertools.chain()
- Sujunkite du sąrašus naudodami sumažinti () funkciją
Sujunkite du sąrašus Python naudojant naivų metodą
Taikydami šį metodą, perkeliame antrąjį sąrašą ir toliau pridedame elementus prie pirmojo sąrašo, kad pirmame sąraše būtų visi elementai abiejuose sąrašuose ir taip būtų atlikta pridėti.
Python3
# Initializing lists> test_list1>=> [>1>,>4>,>5>,>6>,>5>]> test_list2>=> [>3>,>5>,>7>,>2>,>5>]> # using naive method to concat> for> i>in> test_list2 :> >test_list1.append(i)> # Printing concatenated list> print> (>'Concatenated list using naive method : '> >+> str>(test_list1))> |
>
>Išvestis
Concatenated list using naive method : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>
Laiko sudėtingumas: O(n + m), kur n ir m yra atitinkamai duoto test_list1 ir test_list2 ilgiai.
Pagalbinė erdvė: O(m)
Sujunkite du sąrašus naudodami + operatorių
Labiausiai įprastas būdas atlikti sąrašo sujungimą, naudojimas + operatorius gali lengvai pridėti visą sąrašą po kito sąrašo ir taip atlikti sujungimas.
Python3
# Initializing lists> test_list3>=> [>1>,>4>,>5>,>6>,>5>]> test_list4>=> [>3>,>5>,>7>,>2>,>5>]> # using + operator to concat> test_list3>=> test_list3>+> test_list4> # Printing concatenated list> print> (>'Concatenated list using + : '> >+> str>(test_list3))> |
>
>Išvestis
Concatenated list using + : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>
Laiko sudėtingumas: O(n), kur n yra bendras elementų skaičius abiejuose sąrašuose, nes + operatorius kartoja visus abiejų sąrašų elementus, kad juos sujungtų.
Pagalbinė erdvė: O(n), kur n yra bendras elementų skaičius abiejuose sąrašuose, nes sukuriamas naujas sąrašas, kuriame saugomas sujungtas sąrašas.
Sujunkite du sąrašus Python, naudodami sąrašo supratimą
Sąrašo supratimas taip pat gali atlikti šią sąrašų sujungimo užduotį. Tokiu atveju sukuriamas naujas sąrašas, tačiau šis metodas yra vienos linijos alternatyva aukščiau aptartam ciklo metodui.
Python3
# Python3 code to demonstrate list> # concatenation using list comprehension> # Initializing lists> test_list1>=> [>1>,>4>,>5>,>6>,>5>]> test_list2>=> [>3>,>5>,>7>,>2>,>5>]> # using list comprehension to concat> res_list>=> [y>for> x>in> [test_list1, test_list2]>for> y>in> x]> # Printing concatenated list> print> (>'Concatenated list using list comprehension: '> >+> str>(res_list))> |
>
>Išvestis
Concatenated list using list comprehension: [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>
Laiko sudėtingumas: O(n + m), kur n ir m yra duoto test_list1 ir test_list2 ilgis
Pagalbinė erdvė: O(k), kur k yra res_list ilgis.
Sujunkite du sąrašus naudodami išplėstinį ()
The pratęsti () yra funkcija, išplėsta sąrašais Python, todėl gali būti naudojama šiai užduočiai atlikti. Ši funkcija atlieka pirmojo sąrašo išplėtimą vietoje.
Python3
# Python3 code to demonstrate list> # concatenation using list.extend()> # Initializing lists> test_list3>=> [>1>,>4>,>5>,>6>,>5>]> test_list4>=> [>3>,>5>,>7>,>2>,>5>]> # using list.extend() to concat> test_list3.extend(test_list4)> # Printing concatenated list> print> (>'Concatenated list using list.extend() : '> >+> str>(test_list3))> |
>
>Išvestis
Concatenated list using list.extend() : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>
Python sujunkite du sąrašus naudodami * operatorių
Naudojant operatorių *, šis metodas yra naujas sąrašo sujungimo priedas ir veikia tik Python 3.6+. Bet koks Nr. sąrašų galima sujungti ir grąžinti į naują sąrašą naudojant šį operatorių.
Python3
# Python3 code to demonstrate list> # concatenation using * operator> # Initializing lists> test_list1>=> [>1>,>4>,>5>,>6>,>5>]> test_list2>=> [>3>,>5>,>7>,>2>,>5>]> # using * operator to concat> res_list>=> [>*>test_list1,>*>test_list2]> # Printing concatenated list> print> (>'Concatenated list using * operator : '> >+> str>(res_list))> |
>
>Išvestis
Concatenated list using * operator : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>
Python sujunkite du sąrašus naudodami itertools.chain()
The itertools.chain() grąžina iteraciją po to, kai sujungia savo argumentus viename ir todėl nereikia saugoti sujungto sąrašo, jei reikalinga tik pradinė iteracija. Tai naudinga, kai sujungtas sąrašas turi būti naudojamas tik vieną kartą.
Python3
# Python3 code to demonstrate list> # concatenation using itertools.chain()> import> itertools> # Initializing lists> test_list1>=> [>1>,>4>,>5>,>6>,>5>]> test_list2>=> [>3>,>5>,>7>,>2>,>5>]> # using itertools.chain() to concat> res_list>=> list>(itertools.chain(test_list1, test_list2))> # Printing concatenated list> print> (>'Concatenated list using itertools.chain() : '> >+> str>(res_list))> |
java nepakeičiamas sąrašas
>
>Išvestis
Concatenated list using itertools.chain() : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>
Sujunkite du sąrašus naudojant redukcijos () funkciją
Pirmiausia turime importuoti mažinimo funkciją iš funkcinės priemonės biblioteka. Tada inicijuokite du kintamuosius, kuriuose yra du skirtingi sąrašai. Dabar naudosime kitą sąrašą, kuriame saugosime visus sąrašus, sudarytus ankstesniame žingsnyje. Turime sudaryti įdėtą sąrašą. Dabar naudosime funkciją reduktorius () ir perduosime tą įdėtą sąrašą kaip parametrą kartu su dviem kintamaisiais (jei pasirinksime turėti du sąrašus). Ir naudokite anoniminę funkciją lambda Norėdami atlikti sujungimo operaciją ir išsaugoti ją sąraše.
Python3
from> functools>import> reduce> test_list1>=> [>1>,>4>,>5>,>6>,>5>]> test_list2>=> [>3>,>5>,>7>,>2>,>5>]> nested_list>=> [test_list1,test_list2]> print>(>reduce>(>lambda> i,j:i>+>j,nested_list,[]))> |
>
>Išvestis
[1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>
Laiko sudėtingumas: O(n+m), n – pirmojo sąrašo ilgis, o m – antrojo sąrašo ilgis.
Pagalbinė erdvė: O(n), n yra sąrašų, į kuriuos atsižvelgiama, skaičius