Python | Połącz dwie listy w listę krotek

| | | | | | |

Przykłady:

Wkład:  list1 = [1, 2, 3] list2 = [`a`,` b`, `c `] Wyjście:  [(1,` a`), (2, `b`), (3,` c`)] Wejście:  lista1 = [1, 2, 3, 4] lista2 = [1, 4, 9] Wyjście:  [(1, 1), (2, 4), (3, 9), (4, ``)] 

Podejście nr 1: Naiwne
Połącz obie listy w listę krotek za pomocą pętli for. Ale wadą jest to, że obie listy muszą mieć tę samą długość.


def merge (lista1, lista2):


merged_list = [(list1 [i], lista2 [i]) for i w zakresie ( 0 , len (list1))]

return merged_list


# Kod sterownika

l ist1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2 ))

Wyjście:

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

Podejście nr 2: Naiwne, ale skuteczniejsze
To metoda naprawia powyższą wadę i działa dobrze z nierównymi długościami dwóch list. Zapewnia to również błąd próby wyłapania dla błędu indeksu.


def merge (list1, list2):


merged_list = []

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


while Prawda :

spróbuj :

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

z wyjątkiem IndexError:

if len (lista1) > len (list2):

lista2. append (``)

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

elif len (lista1) " len (list2):

lista1. append (``)

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

kontynuuj


merged_list.append (tup)

break

return merged_list


# Kod sterownika

lista1 = [ 1 , 2 , 3 ]

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

print (scalanie (list1, list2))

Wyjście:

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

Podejście nr 3 Za pomocą zip ()
używając metody zip (), aby połączyć dwa elementy listy, a następnie wstrzyknąć je w krotkę.

def merge (list1, list2):


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

return merged_list


# Kod sterownika

list1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2))

Wyjście:

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

Podejście nr 4: Używanie enumerate (), alternatywy dla zip ().

Ta metoda wykorzystuje dwie pętle for do iteracji przez listy i łączenia dwie listy.


def merge (list1 , list2):


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

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

return merged_list


# Kod sterownika

list1 = [ 1 , 2 , 3 ]

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

print (merge (list1, list2 ))

Wyjście:

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

Podejście nr 5 Korzystanie z map () i lambda .


# Używanie map() i lambda

def listOfTuples (l1, l2):

return lista ( mapa ( lambda x, y: (x, y), l1, l2))


Kod sterownika

list1 = [ 1 , 2 , 3 ]

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


print (listOfTuples (list1, list2))

Wyjście:

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