Python | Concatena due elenchi in un elenco di tuple

| | | | | | |

Esempi:

Input:  list1 = [1, 2, 3] list2 = [`a`,` b`, `c `] Output:  [(1,` a`), (2, `b`), (3,` c`)] Input:  list1 = [1, 2, 3, 4] lista2 = [1, 4, 9] Risultato:  [(1, 1), (2, 4), (3, 9), (4, ``)] 

Approccio n. 1: ingenuo
Concatena entrambi gli elenchi in un elenco di tuple usando un ciclo for. Ma lo svantaggio è che le due liste devono avere la stessa lunghezza.


def merge (lista1, lista2):


merged_list = [(list1 [i], list2 [i]) for i in range ( 0 , len (list1))]

return merged_list


# Codice del driver

lista1 = [ 1 , 2 , 3 ]

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

print (unisci (lista1, lista2 ))

Esci:

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

Approccio n. 2: ingenuo ma più efficace
Questo il metodo risolve lo svantaggio di cui sopra e funziona bene con lunghezze disuguali di due elenchi. Ciò fornisce anche un errore try catch per l`errore Index.


def merge (list1, list2):


merged_list = []

for i in intervallo ( max (( len (list1), len (list2)))):


mentre V rue :

prova :

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

tranne IndexError:

se len (lista1) > len (list2):

list2. append (``)

tup = (lista1 [i], lista2 [i])

elif len (lista1) " len (list2):

list1. append (``)

tup = (lista1 [i], lista2 [i])

continua


merged_list.append (tup)

break

return merged_list


# Codice del driver

list1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2))

Esci:

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

Approccio n. 3 Usando zip()
usando il metodo zip() per concatenare due elementi dell`elenco e quindi inserirli in una tupla.

def merge (list1, list2):


merged_list = tupla ( zip (lista1, li st2))

return merged_list


# Codice del driver

list1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2))

Esci:

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

Approccio n. 4: utilizzando enumerate(), un`alternativa a zip().

Questo metodo utilizza due cicli for per scorrere gli elenchi e concatenare i due elenchi.


def merge (list1 , list2):


merged_list = [(p1, p2) for idx1, p1 in enumera (list1)

for idx2, p2 in enumer ate (list2) if idx1 = = idx2]

ritorno merged_list


# Codice del driver

list1 = [ 1 , 2 , 3 ]

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

print (unisci (lista1, lista2 ))

Esci:

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

Approccio n. 5 Usando map() e lambda .


# Utilizzo di map() e lambda

def listOfTuples (l1, l2):

return elenco ( mappa ( lambda x, y: (x, y), l1, l2))


Codice del driver

list1 = [ 1 , 2 , 3 ]

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


print (listOfTuples (list1, list2))

Esci:

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