Open In App

# Merge Two Lists in Python

Let’s see how to concatenate two lists using different methods in Python. This operation is useful when we have a number of lists of elements that need to be processed in a similar manner.

`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 Join Two Lists

### Merge two lists in Python using Naive Method

In this method, we traverse the second list and keep appending elements in the first list, so that the first list would have all the elements in both lists and hence would perform the append.

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

Output

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

```

Time Complexity: O(n + m), where n and m are the lengths of the given test_list1 and test_list2 respectively.
Auxiliary Space: O(m)

### Concatenate two lists using the “+” operator

The most conventional method to perform the list concatenation, the use of “+” operator can easily add the whole of one list behind the other list and hence perform the concatenation.

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

Output

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

```

Time complexity: O(n), where n is the total number of elements in both lists, as the + operator iterates through all elements of both lists to concatenate them.
Auxiliary space: O(n), where n is the total number of elements in both lists, as a new list is created to store the concatenated list.

### Merge Two Lists in Python using list comprehension

List comprehension can also accomplish this task of list concatenation. In this case, a new list is created, but this method is a one-liner alternative to the loop method discussed above.

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

Output

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

```

Time Complexity: O(n + m), where n and m are length of given test_list1 and test_list2
Auxiliary Space: O(k), where k is the length of res_list.

### Merge two lists using extend()

The extend() is the function extended by lists in Python and hence can be used to perform this task. This function performs the in-place extension of the first list.

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

Output

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

```

### Python Join Two Lists using * operator

Using the * operator, this method is a new addition to list concatenation and works only in Python 3.6+. Any no. of lists can be concatenated and returned in a new list using this operator.

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

Output

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

```

### Python Join Two Lists using itertools.chain()

The itertools.chain() returns the iterable after chaining its arguments in one and hence does not require storing the concatenated list if only its initial iteration is required. This is useful when the concatenated list has to be used just once.

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

Output

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

```

### Concatenate two lists using reduce() function

Firstly we need to import the reduce function from functools library. Then initialize two variables that hold two different lists. Now we will use another list in which we will store all the lists taken in the previous step. We need to form a nested list. Now we will use the reduce() function and pass that nested list as a parameter alongside two variables (if we choose to have two lists). And use the Anonymous function lambda to do the concatenation operation and store it in a list.

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

Output

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

```

Time Complexity: O(n+m), n is the length of the first list, and m is the length of the second list.
Auxiliary Space: O(n), n is the number of lists taken into consideration