How to merge lists into a list of tuples?

322,363

Solution 1

In Python 2:

>>> list_a = [1, 2, 3, 4]
>>> list_b = [5, 6, 7, 8]
>>> zip(list_a, list_b)
[(1, 5), (2, 6), (3, 7), (4, 8)]

In Python 3:

>>> list_a = [1, 2, 3, 4]
>>> list_b = [5, 6, 7, 8]
>>> list(zip(list_a, list_b))
[(1, 5), (2, 6), (3, 7), (4, 8)]

Solution 2

In python 3.0 zip returns a zip object. You can get a list out of it by calling list(zip(a, b)).

Solution 3

You can use map lambda

a = [2,3,4]
b = [5,6,7]
c = map(lambda x,y:(x,y),a,b)

This will also work if there lengths of original lists do not match

Solution 4

Youre looking for the builtin function zip.

Solution 5

I am not sure if this a pythonic way or not but this seems simple if both lists have the same number of elements :

list_a = [1, 2, 3, 4]

list_b = [5, 6, 7, 8]

list_c=[(list_a[i],list_b[i]) for i in range(0,len(list_a))]
Share:
322,363
Haskell-newb
Author by

Haskell-newb

/* no comments*/

Updated on January 15, 2022

Comments

  • Haskell-newb
    Haskell-newb over 2 years

    What is the Pythonic approach to achieve the following?

    # Original lists:
    
    list_a = [1, 2, 3, 4]
    list_b = [5, 6, 7, 8]
    
    # List of tuples from 'list_a' and 'list_b':
    
    list_c = [(1,5), (2,6), (3,7), (4,8)]
    

    Each member of list_c is a tuple, whose first member is from list_a and the second is from list_b.