Skip to content
Related Articles

Related Articles

Improve Article

Python | Merge two lists into list of tuples

  • Difficulty Level : Easy
  • Last Updated : 27 Dec, 2018

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

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :