Python | İki listeyi bir demet listesi halinde birleştirin

| | | | | | |

Örnekler:

Girdi:  list1 = [1, 2, 3] list2 = [`a`,` b`, `c `] Çıktı:  [(1,` a`), (2, `b`), (3,` c`)] Girdi:  list1 = [1, 2, 3, 4] list2 = [1, 4, 9] Çıktı:  [(1, 1), (2, 4), (3, 9), (4, ``)] 

Yaklaşım # 1: Naif
Bir for döngüsü kullanarak her iki listeyi bir demet listesi halinde birleştirin. Ancak dezavantajı, iki listenin aynı uzunlukta olması gerektiğidir.


def birleştirme (list1, list2):


merged_list = [(list1 [i], liste2 [i]) for i aralık ( 0 , len (list1))]

dönüş merged_list


# Sürücü kodu

l ist1 = [ 1 , 2 , 3 ]

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

print (birleştirme (list1, list2 ))

Çıkış:

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

Yaklaşım # 2: Naif ama daha etkili
Bu yöntem yukarıdaki dezavantajı giderir ve eşit olmayan uzunluklarda iki listeyle iyi çalışır. Bu ayrıca Dizin hatası için bir deneme yakalama hatası sağlar.


def birleştirme (list1, list2):


merged_list = []

için "anahtar kelime"> i aralık < kod sınıfı = "düz"> ( maks (( len (list1), len (list2)))):


while True :

deneyin :

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

hariç IndexError:

ise len (list1) > len (list2):

liste2. append (``)

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

elif len (list1) " len (list2):

liste1. append (``)

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

devam


merged_list.append (tup)

break

dönüş merged_list


# Sürücü kodu

list1 = [ 1 , 2 , 3 ]

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

yazdır (birleştirme (list1, list2))

Çıkış:

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

Yaklaşım # 3 zip () kullanarak
iki liste öğesini birleştirmek ve ardından bunları bir demete enjekte etmek için zip () yöntemini kullanma.

def birleştirme (list1, list2):


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

dönüş merged_list


# Sürücü kodu

list1 = [ 1 , 2 , 3 ]

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

print (birleştirme (list1, list2))

Çıkış:

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

Yaklaşım # 4: Zip`e () bir alternatif olan numaralandırma () kullanımı.

Bu yöntem, listeler arasında yineleme yapmak ve verileri birleştirmek için iki for döngüsü kullanır. iki liste.


def birleştirme (list1 , list2):


merged_list = [(p1, p2) için idx1, p1 numaralandır (list1)

için idx2, p2 in numaralandırma yedi (list2) if idx1 = = idx2]

döndür merged_list


# Sürücü kodu

list1 = [ 1 , 2 , 3 ]

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

print (birleştirme (list1, list2 ))

Çıkış:

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

Yaklaşım # 5 harita () kullanarak ve lambda .


# map () ve lambda kullanma

def listOfTuples (l1, l2):

dönüş liste ( harita ( lambda x, y: (x, y), l1, l2))


Sürücü kodu

list1 = [ 1 , 2 , 3 ]

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


yazdır (listOfTuples (list1, liste2))

Çıkış:

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