How to merge lists into a list of tuples?

后端 未结 8 1952
你的背包
你的背包 2020-11-21 22:30

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          


        
相关标签:
8条回答
  • 2020-11-21 22:52

    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)]
    
    0 讨论(0)
  • 2020-11-21 22:54

    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)) 
    
    0 讨论(0)
  • 2020-11-21 22:59

    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]
    
    0 讨论(0)
  • 2020-11-21 23:02

    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

    0 讨论(0)
  • 2020-11-21 23:03

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

    0 讨论(0)
  • 2020-11-21 23:08

    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))]
    
    0 讨论(0)
提交回复
热议问题