Python
 Computer >> コンピューター >  >> プログラミング >> Python

共通要素に基づいてリストをセットに変換するPythonプログラムの書き方

特定の共通要素に基づいてリストをセットに変換したい場合、「enumerate」を使ってデータを反復処理しながら、要素に対して特定の条件を適用するメソッドを定義する方法が有効です。この処理では、集合を結合する「union」メソッドと、各要素に関数を適用する「map」メソッドを組み合わせて使用します。

サンプルコード

以下に、実際の実装例を示します。

def common_elem_set(my_set):
    for index, val in enumerate(my_set):
        for j, k in enumerate(my_set[index + 1:], index + 1):

            if val & k:
                my_set[index] = val.union(my_set.pop(j))
                return common_elem_set(my_set)
    return my_set

my_list = [[18, 14, 12, 19], [9, 6, 2, 1], [54, 32, 21, 17], [18, 11, 13, 12]]

print("The list is :")
print(my_list)

my_set = list(map(set, my_list))

my_result = common_elem_set(my_set)

print("The result is :")
print(my_result)

出力結果

The list is :
[[18, 14, 12, 19], [9, 6, 2, 1], [54, 32, 21, 17], [18, 11, 13, 12]]
The result is :
[{11, 12, 13, 14, 18, 19}, {9, 2, 6, 1}, {32, 17, 21, 54}]

コードの解説

  • まず、「common_elem_set」という名前のメソッドを定義し、リストを引数として受け取ります。

  • enumerateを使用してリストの各要素を反復処理し、インデックスと値を同時に取得します。

  • 「&」演算子は集合の積集合(共通部分)を求めるためのもので、これにより共通要素が存在するかどうかを判定します。条件が満たされた場合、unionメソッドで2つの集合を結合し、再帰的にメソッドを呼び出して処理を続けます。

  • メソッドの外側では、リストの中にリストが入ったネスト構造のリストを定義しています。

  • 元のリストをコンソールに表示して確認できるようにします。

  • 「map」メソッドを使ってリスト内の各要素をset型に変換し、さらにlist関数でリストに戻します。これにより、集合演算が可能な状態になります。

  • 変換後のデータを変数に代入します。

  • その変数を引数としてcommon_elem_setメソッドを呼び出し、共通要素を持つ集合の統合処理を実行します。

  • 最終的な結果をコンソールに出力して表示します。

このように、実行結果を見ると、最初のリスト[18, 14, 12, 19]と最後のリスト[18, 11, 13, 12]には共通要素(18や12など)が含まれているため、両者が統合されて{11, 12, 13, 14, 18, 19}という一つの集合になっていることがわかります。一方、共通要素を持たないリストはそれぞれ独立した集合として保持されます。

  1. Pythonでソート済みリストの順序を保ったまま要素を挿入する2つの方法

    本記事では、ソート済みのリストに対して、その並び順を崩すことなく新しい要素を挿入する方法について解説します。 問題文 リストが与えられたとき、既存のソート順を維持したまま、指定した要素を適切な位置に挿入する必要があります。 この問題を解くには、主に以下の2つのアプローチがあります。 アプローチ1:線形探索による力まかせ法(ブルートフォース) まず、挿入すべき位置をリストの先頭から順に走査して見つけ出し、そこへ要素を挿入するというシンプルな方法です。挿入する要素より大きい値が最初に現れた位置に、新しい要素を差し込みます。 コード例 n: index = i

  2. Pythonで文字のリストを文字列に変換する方法を解説

    Pythonでは、リスト内の個々の要素をひとつの文字列にまとめたい場面がよくあります。たとえば、データを保存したり送信したりする際に必要となるシリアライズ(直列化)の処理では、このような変換が非常に役立ちます。具体的には、次のような変換を指します。[h, e, l, l, o, , w, o, r, l, d] → hello worldjoinメソッドを使った変換Pythonには、このような変換を実現するためのjoin()メソッドが標準で用意されています。joinメソッドは、区切り文字(デリミタ)として使う文字列に対して呼び出し、引数に渡したリストの各要素を連結します。今回は各文字をつなげ