Python | Verkettet zwei Listen zu einer Liste von Tupeln

| | | | | | |

Beispiele:

Eingabe:  list1 = [1, 2, 3] list2 = [`a`,` b`, `c `] Ausgabe:  [(1,` a`), (2, `b`), (3,` c`)] Eingabe:  list1 = [1, 2, 3, 4] list2 = [1, 4, 9] Ausgabe:  [(1, 1), (2, 4), (3, 9), (4, ``)] 

Ansatz Nr. 1: Naiv
verketten Sie beide Listen mit einer for-Schleife zu einer Liste von Tupeln. Aber der Nachteil ist, dass die beiden Listen gleich lang sein müssen.


def merge (Liste1, Liste2):


merged_list = [(list1 [i], list2 [i]) for i im Bereich ( 0 , len (list1))]

return merged_list


# Treibercode

list1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2 ))

Beenden:

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

Ansatz Nr. 2: Naiv, aber effektiver
Dieser -Methode behebt den oben genannten Nachteil und funktioniert gut mit ungleichen Längen von zwei Listen. Dies liefert auch einen Try-Catch-Fehler für den Index-Fehler.


def merge (list1, list2):


merged_list = []

für i im Bereich ( max (( len (list1), len (list2)))):


while True :

versuchen :

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

außer IndexError:

if len (list1) > len (list2):

list2. append (``)

tup = (Liste1 [i], Liste2 [i])

elif len (list1) " len (list2):

list1. append (``)

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

weiter


merged_list.append (tup)

break

return merged_list


# Treibercode

list1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2))

Exit:

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

Ansatz Nr. 3 Mit zip ()
unter Verwendung der zip()-Methode, um zwei Listenelemente zu verketten und sie dann in ein Tupel einzufügen.

def merge (list1, list2):


merged_list = Tupel ( zip (Liste1, Li st2))

return merged_list


# Treibercode

list1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2))

Beenden:

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

Ansatz Nr. 4: Verwendung von enumerate (), einer Alternative zu zip ().

Diese Methode verwendet zwei for-Schleifen, um Listen zu durchlaufen und zu verketten zwei Listen.


def merge (list1 , list2):


merged_list = [(p1, p2) für idx1, p1 in aufzählen (list1)

für idx2, p2 in enumer aß (list2) if idx1 = = idx2]

return merged_list


# Treibercode

list1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2 ))

Beenden:

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

Ansatz Nr. 5 Verwendung von map () und lambda .


# Verwenden von map() und Lambda

def listOfTuples (l1, l2):

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


Treibercode

list1 = [ 1 , 2 , 3 ]

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


print (listOfTuples (list1, list2))

Beenden:

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