Pythonで2つのリストの要素をK個ずつ交互に組み合わせる方法
Pythonでは、2つのリストから指定した個数(K)ずつ要素を取り出し、交互に組み合わせて1つのリストを作成したいケースがあります。このような処理は、シンプルなwhileループによる反復処理と、ジェネレータ関数の「yield」、そしてインデックス操作を組み合わせることで効率的に実現できます。
サンプルコード
以下に具体的な実装例を示します。
print("Method definition begins")
def merge_the_vals(my_list_1, my_list_2, K):
index_1 = 0
index_2 = 0
while(index_1 < len(my_list_1)):
for i in range(K):
yield my_list_1[index_1]
index_1 += 1
for i in range(K):
yield my_list_2[index_2]
index_2 += 1
print("Method definition ends")
my_list_1 = [12, 56, 14, 28, 61, 73, 59, 90]
my_list_2 = [52, 16, 17, 34, 43, 16, 84, 57]
print("The first list is : " )
print(my_list_1)
print("The second list is : " )
print(my_list_2)
K = 2
print("The value of K is ")
print(K)
my_result = [element for element in merge_the_vals(my_list_1, my_list_2, K)]
print("The resultant list is : ")
print(my_result)
print("The list after sorting is : " )
my_result.sort()
print(my_result)
出力
Method definition begins Method definition ends The first list is : [12, 56, 14, 28, 61, 73, 59, 90] The second list is : [52, 16, 17, 34, 43, 16, 84, 57] The value of K is 2 The resultant list is : [12, 56, 52, 16, 14, 28, 17, 34, 61, 73, 43, 16, 59, 90, 84, 57] The list after sorting is : [12, 14, 16, 16, 17, 28, 34, 43, 52, 56, 57, 59, 61, 73, 84, 90]
コードの解説
まず、2つのリストと値Kを引数として受け取る関数「merge_the_vals」を定義します。
whileループの中で、インデックスの値とリストの長さを比較しながら、「yield」を使って第1リストからK個、続いて第2リストからK個の要素を順番に返します。
関数の外側では、整数のリストを2つ定義し、それぞれコンソールに表示します。
Kの値を定義し、コンソールに表示します。
リスト内包表記を使って関数を呼び出し、必要なパラメータを渡して生成された全要素を取得します。
その結果を変数「my_result」に代入します。
結合後のリストをコンソールに出力します。
最後にsortメソッドでリストを昇順にソートし、結果をコンソールに表示します。
このようにジェネレータ関数を活用することで、メモリを無駄に消費せずに2つのリストを交互に結合できます。また、Kの値を変更すれば、一度に取り出す要素数も柔軟に調整できるため、さまざまな場面で応用可能です。
-
Pythonでリスト内の最小値を見つける方法を解説
この記事では、リストの中から最小の数値を見つける方法について、具体的なサンプルコードとともに詳しく解説します。問題の概要問題: 数値のリストが与えられたとき、その中に含まれる最も小さい数値を画面に表示すること。この問題を解くアプローチは主に2つあります。ひとつは sort() メソッドを使ってリストを昇順に並べ替え、先頭の要素(インデックス0)を取得する方法。もうひとつは、Pythonに標準で用意されている組み込み関数 min() を使う方法です。それぞれ順番に見ていきましょう。方法1:sort()メソッドで並べ替えて最小値を取得するまずはリストを昇順にソートし、先頭の要素を取り出す方法です。
-
指定された文字列のすべての順列を出力するPythonプログラム
本記事では、以下の問題に対する解決策について詳しく学んでいきます。 問題文 1つの文字列が与えられたとき、その文字列から作成できるすべての順列(並べ替えの組み合わせ)を表示する必要があります。 それでは、以下の実装例で具体的な解決策を見ていきましょう。 実装例 # リストを文字列に変換 def toString(List): return .join(List) # 順列の生成 def permute(a, l, r): if l == r: print(toString(a)) else: for i in range(l, r +