Python | Concaténer deux listes en une liste de tuples

| | | | | | |

Exemples :

Entrée :  list1 = [1, 2, 3] list2 = [`a`,` b`, `c `] Sortie :  [(1,` a`), (2, `b`), (3,` c`)] Entrée :  list1 = [1, 2, 3, 4] list2 = [1, 4, 9] Sortie :  [(1, 1), (2, 4), (3, 9), (4, ``)] 

Approche n° 1 : Naïve
Concaténer les deux listes en une liste de tuples à l`aide d`une boucle for. Mais l`inconvénient est que les deux listes doivent avoir la même longueur.


def merge (list1, list2) :


merged_list = [(list1 [i], list2 [i]) for i dans plage ( 0 , len (list1))]

return merged_list


# Code du pilote

l ist1 = [ 1 , 2 , 3 ]

list2 = [ `a` ="plain ">, ` b` , `c` ]

print (merge (list1, list2 ))

Quitter :

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

Approche n° 2 : Naïve mais plus efficace
Cette La méthode corrige l`inconvénient ci-dessus et fonctionne bien avec des longueurs inégales de deux listes. Cela fournit également une erreur try catch pour l`erreur d`index.


def fusionner (list1, list2) :


merged_list = []

pour i dans plage ( max (( len (list1), len (list2)))) :


tandis que Vrai  :

essayez  :

tup = (list1 [i], list2 [i])

sauf IndexError :

si len (list1) > len (list2) :

list2. ajouter (``)

tup = (list1 [i], list2 [i])

elif len (list1) " len (list2) :

list1. ajouter (``)

tup = (list1 [i], list2 [i])

continuer


merged_list.append (tup)

break

return merged_list


# Code du pilote

list1 = [ 1 , 2 , 3 ]

list2 = [ `a` , ` b` , `c` ]

imprimer (merge (list1, list2))

Quitter :

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

Approche # 3 Utilisation de zip ()
utilisation de la méthode zip () pour concaténer deux éléments de liste, puis les injecter dans un tuple.

def fusionner (list1, list2) :


merged_list = tuple ( zip (liste1, li st2))

return merged_list


# Code du pilote

list1 = [ 1 , 2 , 3 ]

list2 = [ `a` , ` b` , ` c` ]

print (merge (list1, list2))

Quitter :

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

Approche # 4 : Utiliser enumerate(), une alternative à zip().

Cette méthode utilise deux boucles for pour parcourir les listes et concaténer les deux listes.


def merge (list1 , list2):


merged_list = [(p1, p2) pour idx1, p1 dans énumérer (list1)

pour idx2, p2 dans enumer mangé (list2) si idx1 = = idx2]

retourner merged_list


# Code du pilote

list1 = [ 1 , 2 , 3 ]

list2 = [ `a` , ` b` , `c` ]

print (merge (list1, list2 ))

Quitter :

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

Approche # 5 Utilisation de map () et lambda .


# Utilisation de map() et lambda

def listOfTuples (l1, l2):

return list ( map ( lambda x, y : (x, y), l1, l2))


Code du pilote

list1 = [ 1 , 2 , 3 ]

list2 = [ `a` , `b` , ` c` ]


print (listOfTuples (list1, list2))

Quitter :

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