Python combine 2 lists into list of tuples

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.

asked Mar 9, 2010 at 7:51

0

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

mrgloom

18.3k30 gold badges151 silver badges270 bronze badges

answered Mar 9, 2010 at 7:52

Python combine 2 lists into list of tuples

YOUYOU

116k32 gold badges184 silver badges216 bronze badges

5

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

Python combine 2 lists into list of tuples

jamylak

123k29 gold badges227 silver badges227 bronze badges

answered Feb 28, 2011 at 19:26

LodewijkLodewijk

3,4612 gold badges17 silver badges15 bronze badges

1

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

answered Jul 4, 2015 at 5:49

Dark KnightDark Knight

8391 gold badge8 silver badges18 bronze badges

6

Youre looking for the builtin function zip.

answered Mar 9, 2010 at 7:55

MizipzorMizipzor

49.4k22 gold badges94 silver badges138 bronze badges

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

Jee Mok

5,5938 gold badges44 silver badges71 bronze badges

answered Sep 11, 2018 at 7:51

Python combine 2 lists into list of tuples

VipinVipin

991 silver badge4 bronze badges

0

The output which you showed in problem statement is not the tuple but list

list_c = [(1,5), (2,6), (3,7), (4,8)]

check for

type(list_c)

considering you want the result as tuple out of list_a and list_b, do

tuple(zip(list_a,list_b)) 

answered May 12, 2016 at 14:52

cyborgcyborg

8401 gold badge15 silver badges33 bronze badges

2

I know this is an old question and was already answered, but for some reason, I still wanna post this alternative solution. I know it's easy to just find out which built-in function does the "magic" you need, but it doesn't hurt to know you can do it by yourself.

>>> list_1 = ['Ace', 'King']
>>> list_2 = ['Spades', 'Clubs', 'Diamonds']
>>> deck = []
>>> for i in range(max((len(list_1),len(list_2)))):
        while True:
            try:
                card = (list_1[i],list_2[i])
            except IndexError:
                if len(list_1)>len(list_2):
                    list_2.append('')
                    card = (list_1[i],list_2[i])
                elif len(list_1)>>
>>> #and the result should be:
>>> print deck
>>> [('Ace', 'Spades'), ('King', 'Clubs'), ('', 'Diamonds')]

answered Feb 17, 2014 at 10:01

KrugerKruger

1771 silver badge4 bronze badges

1

Or map with unpacking:

>>> list(map(lambda *x: x, list_a, list_b))
[(1, 5), (2, 6), (3, 7), (4, 8)]
>>> 

answered Nov 9, 2021 at 5:39

Python combine 2 lists into list of tuples

U12-ForwardU12-Forward

66.1k13 gold badges76 silver badges96 bronze badges

One alternative without using zip:

list_c = [(p1, p2) for idx1, p1 in enumerate(list_a) for idx2, p2 in enumerate(list_b) if idx1==idx2]

In case one wants to get not only tuples 1st with 1st, 2nd with 2nd... but all possible combinations of the 2 lists, that would be done with

list_d = [(p1, p2) for p1 in list_a for p2 in list_b]

answered May 15, 2018 at 13:57

Python combine 2 lists into list of tuples

J0ANMMJ0ANMM

7,1039 gold badges50 silver badges87 bronze badges

Like me, if anyone needs to convert it to list of lists (2D lists) instead of list of tuples, then you could do the following:

list(map(list, list(zip(list_a, list_b))))

It should return a 2D List as follows:

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

answered Jan 15 at 6:44

How do I merge two lists in a tuple?

Practical Data Science using Python.
Initialize list with tuples that contain strings..
Write a function called join_tuple_string that takes a tuple as arguments and return a string..
Join the tuples in the list using map(join_tuple_string, list) method..
Convert the result to list..
Print the result..

How do I merge two lists into a list in Python?

In python, we can use the + operator to merge the contents of two lists into a new list. For example, We can use + operator to merge two lists i.e. It returned a new concatenated lists, which contains the contents of both list_1 and list_2.

How do you convert a list to a list of tuples?

To convert a list of lists to a list of tuples: Pass the tuple() class and the list of lists to the map() function. The map() function will pass each nested list to the tuple() class. The new list will only contain tuple objects.