Scal dwie listy w Pythonie

Zobaczmy, jak połączyć dwie listy przy użyciu różnych metod Pyton . Operacja ta jest przydatna, gdy mamy wiele list elementów, które należy przetworzyć w podobny sposób.

  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 Połącz dwie listy

Poniżej znajdują się metody, które omówimy w tym artykule:

Połącz dwie listy w Pythonie stosując Metodę Naiwną

W tej metodzie przechodzimy przez drugą listę i dodajemy elementy do pierwszej listy, tak aby pierwsza lista zawierała wszystkie elementy z obu list i tym samym wykonywała dodać.

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

Wyjście

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

Złożoność czasowa: O(n + m), gdzie n i m są długościami odpowiednio danej listy_testów1 i listy_testów2.
Przestrzeń pomocnicza: O(m)

Połącz dwie listy za pomocą operatora +

Najbardziej konwencjonalną metodą łączenia list jest użycie + operator można łatwo dodać całą jedną listę za drugą listą i w ten sposób wykonać powiązanie.

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

Wyjście

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

Złożoność czasowa: O(n), gdzie n jest całkowitą liczbą elementów na obu listach, ponieważ operator + iteruje po wszystkich elementach obu list w celu ich połączenia.
Przestrzeń pomocnicza: O(n), gdzie n jest całkowitą liczbą elementów na obu listach, gdy tworzona jest nowa lista do przechowywania listy połączonej.

Scal dwie listy w Pythonie, używając rozumienia list

Rozumienie listy może również wykonać to zadanie łączenia list. W tym przypadku tworzona jest nowa lista, ale ta metoda jest jednowierszową alternatywą dla omówionej powyżej metody pętli.

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

Wyjście

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

Złożoność czasowa: O(n + m), gdzie n i m to długość danej listy_testów1 i listy_testów2
Przestrzeń pomocnicza: O(k), gdzie k jest długością res_list.

Połącz dwie listy za pomocą funkcji Extend()

The rozszerzyć() to funkcja rozszerzona o listy w Pythonie i dlatego można jej użyć do wykonania tego zadania. Ta funkcja wykonuje lokalne rozszerzenie pierwszej listy.

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

Wyjście

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

Python Połącz dwie listy za pomocą operatora *

Dzięki operatorowi * ta metoda jest nowym dodatkiem do łączenia list i działa tylko w Pythonie 3.6 lub nowszym. Dowolny nie. list można połączyć i zwrócić w postaci nowej listy za pomocą tego operatora.

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

Wyjście

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

Python łączy dwie listy za pomocą itertools.chain()

The itertools.chain() zwraca iterowalną wartość po połączeniu jej argumentów w jeden i dlatego nie wymaga przechowywania połączonej listy, jeśli wymagana jest tylko jej początkowa iteracja. Jest to przydatne, gdy lista konkatenowana musi zostać użyta tylko raz.

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

Wyjście

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

Połącz dwie listy za pomocą funkcji redukcji().

Najpierw musimy zaimportować funkcję redukcji z narzędzia funkcyjne biblioteka. Następnie zainicjuj dwie zmienne przechowujące dwie różne listy. Teraz skorzystamy z kolejnej listy, w której będziemy przechowywać wszystkie listy zrobione w poprzednim kroku. Musimy utworzyć listę zagnieżdżoną. Teraz użyjemy funkcji redukcji() i przekażemy tę zagnieżdżoną listę jako parametr wraz z dwiema zmiennymi (jeśli zdecydujemy się na dwie listy). I użyj funkcji Anonimowy lambda aby wykonać operację łączenia i zapisać ją na liście.

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

Wyjście

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

Złożoność czasowa: O(n+m), n to długość pierwszej listy, a m to długość drugiej listy.
Przestrzeń pomocnicza: O(n), n to liczba list branych pod uwagę