logo

Sloučit dva seznamy v Pythonu

Podívejme se, jak zřetězit dva seznamy pomocí různých metod Krajta . Tato operace je užitečná, když máme řadu seznamů prvků, které je třeba zpracovat podobným způsobem.

  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 spojit dva seznamy

Níže jsou uvedeny metody, které pokryjeme v tomto článku:



modely strojového učení

Sloučit dva seznamy v Pythonu pomocí naivní metody

V této metodě procházíme druhý seznam a udržujeme připojování prvků v prvním seznamu, takže první seznam by měl všechny prvky v obou seznamech, a proto by provedl připojit.

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

>

>

Výstup

Concatenated list using naive method : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>

Časová náročnost: O(n + m), kde n a m jsou délky daného seznamu testů1 a seznamu testů2.
Pomocný prostor: O(m)

Spojte dva seznamy pomocí operátoru +

Nejběžnější způsob, jak provést zřetězení seznamu, použití + operátor lze snadno přidat celý jeden seznam za druhý seznam a tím provést zřetězení.

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

>

>

Výstup

Concatenated list using + : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>

Časová složitost: O(n), kde n je celkový počet prvků v obou seznamech, protože operátor + iteruje všechny prvky obou seznamů, aby je spojil.
Pomocný prostor: O(n), kde n je celkový počet prvků v obou seznamech, protože je vytvořen nový seznam pro uložení zřetězeného seznamu.

Sloučit dva seznamy v Pythonu pomocí porozumění seznamu

Porozumění seznamu může také splnit tento úkol zřetězení seznamu. V tomto případě je vytvořen nový seznam, ale tato metoda je jednořádkovou alternativou k metodě smyčky popsané výše.

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

>

>

Výstup

Concatenated list using list comprehension: [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>

Časová náročnost: O(n + m), kde n a m jsou délka daného test_list1 a test_list2
Pomocný prostor: O(k), kde k je délka res_list.

Sloučit dva seznamy pomocí extend()

The rozšířit() je funkce rozšířená o seznamy v Pythonu a lze ji tedy použít k provedení tohoto úkolu. Tato funkce provede místní rozšíření prvního seznamu.

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

>

>

Výstup

Concatenated list using list.extend() : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>

Spojení dvou seznamů v Pythonu pomocí operátoru *

Pomocí operátoru * je tato metoda novým přírůstkem ke zřetězení seznamů a funguje pouze v Pythonu 3.6+. Jakékoliv ne. seznamů lze pomocí tohoto operátoru zřetězit a vrátit v novém seznamu.

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

>

>

Výstup

Concatenated list using * operator : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>

Spojení dvou seznamů v Pythonu pomocí itertools.chain()

The itertools.chain() vrátí iterovatelný po zřetězení jeho argumentů do jednoho, a proto nevyžaduje ukládání zřetězeného seznamu, pokud je vyžadována pouze jeho počáteční iterace. To je užitečné, když je třeba zřetězený seznam použít pouze jednou.

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

mylivecricket.

>

>

Výstup

Concatenated list using itertools.chain() : [1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>

Spojte dva seznamy pomocí funkce snížit().

Nejprve musíme importovat funkci snížení functools knihovna. Poté inicializujte dvě proměnné, které obsahují dva různé seznamy. Nyní použijeme další seznam, do kterého uložíme všechny seznamy pořízené v předchozím kroku. Musíme vytvořit vnořený seznam. Nyní použijeme funkci reduction() a předáme tento vnořený seznam jako parametr vedle dvou proměnných (pokud se rozhodneme mít dva seznamy). A použijte funkci Anonymní lambda provést operaci zřetězení a uložit ji do seznamu.

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,[]))>

>

>

Výstup

[1, 4, 5, 6, 5, 3, 5, 7, 2, 5]>

Časová náročnost: O(n+m), n je délka prvního seznamu a m je délka druhého seznamu.
Pomocný prostor: O(n), n je počet uvažovaných seznamů