Pythonで条件に基づいてリスト内のすべての組み合わせを抽出する方法
ネストされたリスト構造から、指定した条件に従ってすべての組み合わせを取り出したい場面はよくあります。Pythonでは、シンプルな反復処理(whileループとforループ)、appendメソッド、そしてisinstance関数を組み合わせることで、この処理を簡単に実現できます。
実装例
以下のコードは、文字列とリストが混在するリストから、各サブリストの同じインデックス位置にある要素を組み合わせて、新しいリストを生成する例です。
my_list = ["python", [15, 12, 33, 14], "is", ["fun", "easy", "better", "cool"]]
print("The list is :")
print(my_list)
K = 4
print("The value of K is :")
print(K)
my_result = []
count = 0
while count <= K - 1:
temp = []
for index in my_list:
if not isinstance(index, list):
temp.append(index)
else:
temp.append(index[count])
count += 1
my_result.append(temp)
print("The result is :")
print(my_result)
出力結果
The list is : ['python', [15, 12, 33, 14], 'is', ['fun', 'easy', 'better', 'cool']] The value of K is : 4 The result is : [['python', 15, 'is', 'fun'], ['python', 12, 'is', 'easy'], ['python', 33, 'is', 'better'], ['python', 14, 'is', 'cool']]
コードの解説
まず、文字列とリストが混在したリスト
my_listを定義し、コンソールに表示します。生成する組み合わせの数を決める値Kを定義し、コンソールに表示します。
結果を格納するための空のリスト
my_resultを作成します。カウンタとして使用する変数
countを作成し、0で初期化します。whileループで
countがK未満である間、リスト内の各要素を順番に走査します。このとき、isinstance関数を使って、要素がリスト型かどうかを判定します。要素がリストでない場合はそのまま一時リスト
tempに追加し、リストの場合は現在のcount番目の要素を取り出して追加します。これにより、各サブリストから同じ位置の要素を組み合わせたリストが完成します。1回分の組み合わせができあがったら、それを
my_resultに追加し、countを1増やして次の組み合わせの生成へ進みます。最終的に、すべての組み合わせが格納された結果がコンソールに表示されます。
ポイント:isinstance関数とは
isinstance(オブジェクト, 型)は、第一引数のオブジェクトが第二引数で指定した型(またはそのサブクラス)のインスタンスであるかどうかを判定するPythonの組み込み関数です。本記事の例では「要素がリストかどうか」を判別するために活用されており、異なる型が混在するデータ構造を柔軟に処理する際に非常に役立ちます。
-
Pythonでリスト内の最小値を見つける方法を解説
この記事では、リストの中から最小の数値を見つける方法について、具体的なサンプルコードとともに詳しく解説します。問題の概要問題: 数値のリストが与えられたとき、その中に含まれる最も小さい数値を画面に表示すること。この問題を解くアプローチは主に2つあります。ひとつは sort() メソッドを使ってリストを昇順に並べ替え、先頭の要素(インデックス0)を取得する方法。もうひとつは、Pythonに標準で用意されている組み込み関数 min() を使う方法です。それぞれ順番に見ていきましょう。方法1:sort()メソッドで並べ替えて最小値を取得するまずはリストを昇順にソートし、先頭の要素を取り出す方法です。
-
Pythonでリスト内の最大値を見つける方法をわかりやすく解説
この記事では、Pythonを使ってリストの中から最大の要素(最大値)を見つける方法について解説します。初心者の方でも理解しやすいよう、複数のアプローチをコード例とともに紹介していきます。 問題の概要 問題文: 与えられたリストの中から、最も大きい要素を求めて出力してください。 Pythonには便利な組み込み関数が用意されているため、これらを活用することで短いコードで効率的に問題を解決できます。ここでは主に sort() メソッドと max() 関数の2つの方法を取り上げます。 方法1:sort() 関数を使う sort() メソッドはリストを昇順に並べ替えます。並べ替え後のリストの末尾(インデ