Pythonで与えられたリスト内の要素を2つずつペアにして、隣接する要素の差を計算する

スポンサーリンク

Pythonで与えられたリスト内の要素を2つずつペアにして、隣接する要素の差を計算してみます。

今回はitertoolsモジュールを用います。このモジュール・ライブラリはPythonの標準ライブラリですので、事前にインストールする必要はありません。

■Python

今回のPythonのバージョンは、「3.10.9」を使用しています。(Windows11)(pythonランチャーでの確認)

■与えられたリスト内の要素を2つずつペアにして、隣接する要素の差を計算する

では、与えられたリスト内の要素を2つずつペアにして、隣接する要素の差を計算するスクリプトを書いていきます。

■コード

from itertools import tee

def calculate_differences(lst):
    # リストを2つのイテレータに複製する
    current, next_item = tee(lst)
    next(next_item, None)

    # 隣接する要素の差を計算してリストに格納する
    differences = [next_val - current_val for current_val, next_val in zip(current, next_item)]
    return differences

# テスト用のリスト
my_list = [3, 8, 5, 12, 7]

# 隣接する要素の差を計算
result = calculate_differences(my_list)

# 結果の出力
print(result)

まずは、itertoolsモジュールからtee関数をインポートします。tee関数はイテレータを複製するのに使用されます。

def文を用いてcalculate_differences関数を定義します。この関数はリスト lstを引数,パラメータとして受け取ります。リスト lstを2つのイテレータ currentとnext_itemに複製します。これにより、リストを2回反復処理できるようになります。さらにnext関数を使って、next_itemイテレータを1つ進めます。これは、next_itemの最初の要素を無視するために行われます。これにより、zip関数で隣接する要素のペアを作成する際に要素がずれることを防ぎます。

さらにリスト内包表記を使って、currentイテレータとnext_itemイテレータを同時に反復処理し、隣接する要素の差を計算します。隣接する要素の差をリストであるdifferencesに格納します。格納後、隣接する要素の差を計算した結果であるリストであるdifferencesを関数の出力として返します。

次にテスト用のリストmy_listを定義します。定義後、calculate_differences関数を呼び出して、リストmy_listの隣接する要素の差を計算し、その結果をresult変数に格納します。格納後、隣接する要素の差を計算した結果を表示します。

■実行・検証

このスクリプトを「i_main_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、与えられたリスト内の要素を2つずつペアにして、隣接する要素の差を計算し、計算結果を表示させることができました。

コメント

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