Python | 2つのリストをタプルのリストに連結します

| | | | | | |

例:

 入力: list1 = [1、2、3] list2 = [`a`、`b`、`c `] 出力: [(1、` a`)、(2、` b`)、(3、` c`)] 入力: list1 = [1、 2、3、4] list2 = [1、4、9] 出力: [(1、1)、(2、4)、(3、9)、(4、``)] 

アプローチ#1:ナイーブ
forループを使用して両方のリストをタプルのリストに連結します。ただし、欠点は、2つのリストが同じ長さでなければならないことです。


def merge (list1、list2):


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

return merged_list


#ドライバーコード < / p>

l ist1 = [ 1 2 3 ]

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

print (merge(list1、list2 ))

終了:

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

アプローチ#2:素朴だがより効果的
これメソッドは上記の欠点を修正し、2つのリストの長さが等しくない場合にうまく機能します。これにより、インデックスエラーのtrycatchエラーも発生します。


def merge(list1、list2):


merged_list = []

for i in range max (( len (list1)、 len (list2)))):


while True

try

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

IndexErrorを除く:

if len (list1)&gt; len (list2):

list2。 append(``)

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

elif len (list1)&lt; len (list2):

list1。 append(``)

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

続行


merged_list.append(tup)

ブレーク

return merged_list


#ドライバーコード

list1 = [ 1 2 3 ]

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

print (merge(list1、list2))

終了:

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

アプローチ#3 zip()<を使用する/ code>
zip()メソッドを使用して2つのリスト項目を連結し、それらをタプルに挿入します。

def merge(list1、list2):


merged_list = タプル zip (list1、li st2))

return merged_list


#ドライバーコード

list1 = [ 1 2 3 ]

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

print (merge(list1、list2))

終了:

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

アプローチ#4: zip()の代わりにenumerate()を使用します。

このメソッドは、2つのforループを使用して、リストを反復処理し、 2つのリスト。


def merge(list1、list2): < / p>

merged_list = [(p1、p2) for idx1、p1 in 列挙(list1)

for idx2、p2 in enumer食べた(list2) if idx1 = = idx2]

return merged_list


#ドライバーコード

list1 = [ 1 2 3 ]

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

print (merge(list1、list2 ))

終了:

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

アプローチ#5 map()およびlambda


#map()とラムダを使用

def listOfTuples(l1、l2):

return リスト map ラムダ x、y:(x、y)、l1、l2))


ドライバーコード

list1 = [ 1 2 3 ]

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


print (listOfTuples(list1、list2))

終了:

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