Pythonでジェネレータ式を用いたリスト内の重複要素を除いた値を返す関数を定義する

スポンサーリンク

Pythonでジェネレータ式を用いたリスト内の重複要素を除いた値を返す関数を定義し、実装してみます。

■今回の環境(Python)

Google Colaboratory(Google Colab),記事作成時点ではPython 3.9.16が用いられる。

■ジェネレータ式を用いたリスト内の重複要素を除いた値を返す関数の定義

では、ジェネレータ式を用いたリスト内の重複要素を除いた値を返す関数を定義するために、コードを書いていきます。

■コード

def unique_values(lst):
# 空のセットを作成し、既に現れた値を格納する
    seen = set()
 # リストの各要素を順番に処理する
    for item in lst:
        # もしitemが既にセットに含まれていない場合、
        # セットにitemを追加し、itemを出力する
        if item not in seen:
            seen.add(item)
            yield item

my_list = [1, 2, 7, 7, 8, 8, 5]
unique_values_result = list(unique_values(my_list))
print(unique_values_result)

今回はまずdef文を用いてunique_values()という関数を定義します。括弧内には第1の引数,パラメータとしてlstを設定します。設定後、関数が呼び出された時の処理として、まずはseenという変数を定義し、その中でset()を用います。これで空の複数の要素から構成されるセット(集合)が作成されました。そして、リストから重複する要素を除外することができます。次にfor文を用いてlstで受け取ったリスト内の要素を順番にitem変数に格納していきます。その後、if文を用いてitem変数の要素が seen変数に含まれていない場合という条件をもうけて、条件が真(True)だった場合はseen変数に対して(.)ドット演算子を用いてadd()を使いitem変数の要素を追加します。そして、yieldでitem変数が出力され同時に関数の状態を一時停止し、停止後前回の状態から関数の処理が実行され、また関数の処理が繰り返されるという処理になります。これで、seen変数という重複されることが許されない集合(セット)に追加されていない要素だけ返されることになります。

関数を定義後、角括弧”[ ]”を用いてmy_listというリストを定義し、その中に要素(数値)を格納します。格納後、unique_values_resultという変数を定義し、その中でunique_values()を呼び出します。その時に括弧内に引数,パラメータとして第1の引数,パラメータにmy_listのリストを渡します。さらにlist()を用いて関数内で処理された要素をリストに変換し、unique_values_result変数に格納します。

最後にunique_values_result変数内の情報をprint()を用いて出力します。

■実行・検証

このコード(セル)を保存し、Google Colaboratory上で、セルを実行してみます。

実行してみると、ジェネレータ式を用いたリスト内の重複要素を除いた値を返す関数を定義し、定義した関数を呼び出しリストから重複した要素を削除した新しいリストを作成し、作成されたリストをprint()で出力させることができました。

 

コメント

タイトルとURLをコピーしました