Pythonでマトリックス内の要素をグループ化してリストにまとめる方法
Pythonにおいて、マトリックス(リストのリスト)内の要素をグループ化して新しいリストとして取得したい場合には、単純な反復処理に加えて、「pop」メソッド、リスト内包表記、「append」メソッドなどを組み合わせることで実現できます。
この記事では、実際のコード例とその実行結果をもとに、処理の流れをわかりやすく解説します。
サンプルコード
以下に具体的な実装例を示します。
my_list = [[14, 62], [51, 23], [12, 62], [78, 87], [41, 14]]
print("The list is :")
print(my_list)
check_list = [14, 12, 41, 62]
print("The list is :")
print(check_list)
my_result = []
while my_list:
sub_list_1 = my_list.pop()
sub_list_2 = [element for element in check_list if element not in sub_list_1]
try:
my_list.remove(sub_list_2)
my_result.append([sub_list_1, sub_list_2])
except ValueError:
my_result.append(sub_list_1)
print("The result is :")
print(my_result)実行結果
The list is : [[14, 62], [51, 23], [12, 62], [78, 87], [41, 14]] The list is : [14, 12, 41, 62] The result is : [[[41, 14], [12, 62]], [78, 87], [51, 23], [14, 62]]
コードの解説
まず、整数のリストを要素とするリスト(マトリックス)を定義し、コンソールに表示します。
次に、比較対象となる別の整数のリストを定義し、こちらも表示します。
結果を格納するための空のリストを用意します。
whileループによる反復処理を行い、「pop」メソッドを使ってリストの末尾から要素を取り出します。取り出したサブリストは、変数「sub_list_1」に代入されます。
リスト内包表記を使ってチェック用リストを走査し、「sub_list_1」に含まれていない要素のみを抽出した新しいリスト(sub_list_2)を生成します。
「
try」〜「except」ブロックにより、対応するペアが見つかった場合は両者をまとめて結果リストに追加し、見つからなかった場合(ValueErrorが発生した場合)は元のサブリストをそのまま追加します。最終的に、グループ化された結果がコンソールに出力されます。
注意点
「pop」メソッドや「remove」メソッドは元のリストから直接要素を削除するため、このコードを実行すると元のマトリックスは空になります。元のデータを後続の処理でも使いたい場合は、あらかじめcopy()などでコピーを作成しておくことをおすすめします。
-
Pythonでリストから指定したインデックスの複数要素を削除する方法
Pythonのリストから単一の要素を削除するのは、del文とインデックスを組み合わせれば簡単に行えます。しかし、複数のインデックスに該当する要素をまとめて削除したいケースでは、少し工夫が必要です。本記事では、削除対象となるインデックスのリストを指定して、元のリストから該当する要素だけを取り除く方法を2つ紹介します。方法1:sorted()とdelを組み合わせるこのアプローチでは、まず削除したい位置(インデックス)を格納したリストを作成します。その後、降順にソートしてから後ろの要素から順に削除することで、削除処理中にインデックスがずれる問題を回避し、元のリストの構造を保ったまま安全に要素を削除で
-
【初心者向け】Pythonでリストのサイズ(要素数)を取得する方法
リスト(list)は、Pythonにおける代表的なコレクション型のデータ構造の一つです。リストの要素は後から変更でき、重複した値を持つこともできます。本記事では、Pythonでリストのサイズ(長さ)を取得する方法を解説します。具体的には、重複の有無にかかわらず、リストに含まれる全要素の数をカウントする方法を紹介します。リストの長さを取得する基本:len()関数Pythonでリストの要素数を取得するには、組み込み関数の len() を使用します。len() はリストだけでなく、タプル・文字列・辞書などさまざまなコレクションに対しても利用できる汎用的な関数です。サンプルコード以下の例では、「day