# Python | Merge two lists into list of tuples

Given two lists, write a Python program to merge the two lists into list of tuples.

Examples:

```Input : list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
Output : [(1, 'a'), (2, 'b'), (3, 'c')]

Input : list1 = [1, 2, 3, 4]
list2 = [ 1, 4, 9]
Output : [(1, 1), (2, 4), (3, 9), (4, '')]
```

Approach #1 : Naive
Merge both the list into a list of tuple using a for loop. But the drawback is given two lists need to be of the same length.

 `def` `merge(list1, list2): ` `     `  `    ``merged_list ``=` `[(list1[i], list2[i]) ``for` `i ``in` `range``(``0``, ``len``(list1))] ` `    ``return` `merged_list ` `     `  `# Driver code ` `list1 ``=` `[``1``, ``2``, ``3``] ` `list2 ``=` `[``'a'``, ``'b'``, ``'c'``] ` `print``(merge(list1, list2)) `

Output:

```[(1, 'a'), (2, 'b'), (3, 'c')]
```

Approach #2 : Naive but more efficient
This method remove the above given drawback and work well with uneven lengths of the two lists. It also provide try catch error for Index error.

 `def` `merge(list1, list2): ` `     `  `    ``merged_list ``=` `[] ` `    ``for` `i ``in` `range``(``max``((``len``(list1), ``len``(list2)))): ` ` `  `        ``while` `True``: ` `            ``try``: ` `                ``tup ``=` `(list1[i], list2[i]) ` `            ``except` `IndexError: ` `                ``if` `len``(list1) > ``len``(list2): ` `                    ``list2.append('') ` `                    ``tup ``=` `(list1[i], list2[i]) ` `                ``elif` `len``(list1) < ``len``(list2): ` `                    ``list1.append('') ` `                    ``tup ``=` `(list1[i], list2[i]) ` `                ``continue` ` `  `            ``merged_list.append(tup) ` `            ``break` `    ``return` `merged_list ` ` `  `# Driver code ` `list1 ``=` `[``1``, ``2``, ``3``] ` `list2 ``=` `[``'a'``, ``'b'``, ``'c'``] ` `print``(merge(list1, list2)) `

Output:

```[(1, 'a'), (2, 'b'), (3, 'c')]
```

Approach #3 : Using `zip()`
using zip() method to merge the two list elements and then typecasting into tuple.

 `def` `merge(list1, list2): ` `     `  `    ``merged_list ``=` `tuple``(``zip``(list1, list2))  ` `    ``return` `merged_list ` `     `  `# Driver code ` `list1 ``=` `[``1``, ``2``, ``3``] ` `list2 ``=` `[``'a'``, ``'b'``, ``'c'``] ` `print``(merge(list1, list2)) `

Output:

```((1, 'a'), (2, 'b'), (3, 'c'))
```

Approach #4 : Using enumerate(), alternative to zip().

This method uses two for loops to enumerate through lists and merge the two lists.

 `def` `merge(list1, list2): ` `     `  `    ``merged_list ``=` `[(p1, p2) ``for` `idx1, p1 ``in` `enumerate``(list1)  ` `    ``for` `idx2, p2 ``in` `enumerate``(list2) ``if` `idx1 ``=``=` `idx2] ` `    ``return` `merged_list ` `     `  `# Driver code ` `list1 ``=` `[``1``, ``2``, ``3``] ` `list2 ``=` `[``'a'``, ``'b'``, ``'c'``] ` `print``(merge(list1, list2)) `

Output:

```[(1, 'a'), (2, 'b'), (3, 'c')]
```

Approach #5: Using `map()` and `lambda`.

 `# Using map() and lambda ` `def` `listOfTuples(l1, l2): ` `    ``return` `list``(``map``(``lambda` `x, y:(x,y), l1, l2)) ` ` `  `# Driver Code ` `list1 ``=` `[``1``, ``2``, ``3``] ` `list2 ``=` `[``'a'``, ``'b'``, ``'c'``] ` ` `  `print``(listOfTuples(list1, list2)) `

Output:

```[(1, 'a'), (2, 'b'), (3, 'c')]
```

My Personal Notes arrow_drop_up

Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.