Pythonでリスト内の隣接する要素の差分を計算する方法
本記事では、与えられたリストをもとに、隣接する要素同士の値の差を計算して新しいリストを作成する方法を解説します。この処理にはいくつかのアプローチがありますが、ここでは代表的な2つの方法をサンプルコード付きで紹介します。
appendメソッドとrange関数を使う方法
このアプローチでは、各要素のインデックス位置を利用して隣接する要素同士の差を計算し、その結果を新しいリストに順次追加(append)していきます。range関数とlen関数を組み合わせることで、繰り返し処理の回数を制御しているのがポイントです。
サンプルコード
listA = [25, 97, 13, 62, 14, 102]
print("Given list:\n", listA)
list_with_diff = []
for n in range(1, len(listA)):
list_with_diff.append(listA[n] - listA[n-1])
print("Difference between adjacent elements in the list: \n",
list_with_diff)
実行結果
上記のコードを実行すると、以下のような出力が得られます。
Given list: [25, 97, 13, 62, 14, 102] Difference between adjacent elements in the list: [72, -84, 49, -48, 88]
出力を見ると、最初の要素「25」と次の要素「97」の差である「72」から始まり、以降も同様に隣接要素間の差が順番に格納されていることがわかります。
zip関数とリストスライスを使う方法
次のアプローチでは、zip関数とリストのスライスを組み合わせてforループを構築し、隣接する要素同士の差を新しいリストへ追加していきます。元のリストと先頭を1つずらしたリストをzipでペアリングすることで、より直感的かつ簡潔に差分を計算できるのが特徴です。
サンプルコード
listA = [25, 97, 13, 62, 14, 102]
print("Given list:\n", listA)
list_with_diff = []
for i, j in zip(listA[0::], listA[1::]):
list_with_diff.append(j - i)
print("Difference between adjacent elements in the list: \n",
list_with_diff)
実行結果
上記のコードを実行すると、以下のような出力が得られます。
Given list: [25, 97, 13, 62, 14, 102] Difference between adjacent elements in the list: [72, -84, 49, -48, 88]
まとめ
どちらの方法でも同じ結果が得られますが、zip関数とスライスを組み合わせる方法は、Pythonらしい読みやすいコードになるのがメリットです。さらに、リスト内包表記を活用すれば [j - i for i, j in zip(listA, listA[1:])] のように1行で書くことも可能です。用途や可読性の観点から、自分に合った方法を選んで活用してください。
-
【初心者向け】Pythonで2つのリストの差分(違い)を抽出する方法を解説
この記事では、2つのリストが与えられたときに、その差分(違い)を表示するPythonプログラムを紹介します。Pythonにはset()メソッドが用意されており、ここではこのメソッドを活用します。 セット(集合)とは、重複する要素を持たない順序なしのコレクションです。セットオブジェクトは、和集合・積集合・差集合・対称差といった数学的な操作もサポートしているため、リスト同士の比較に非常に便利です。 実行例 入力: A = [10, 15, 20, 25, 30, 35, 40] B = [25, 40, 35] 出力: [10, 20, 30, 15] 考え方 求めたい差分リストは、次のよう
-
Pythonのタプルと辞書(dict)の違いとは?特徴と使い分けをわかりやすく解説
Pythonにはさまざまなデータ構造が用意されていますが、その中でもよく使われるのが「タプル(tuple)」と「辞書(dict)」です。一見どちらも複数のデータをまとめて扱える点で似ていますが、実際にはまったく異なる性質を持つデータ構造です。この記事では、それぞれの特徴と違いをわかりやすく解説します。 タプル(tuple)の特徴 タプルは、複数の要素を順序付きで格納できるデータ構造です。主な特徴は以下のとおりです。 順序が保持される:要素を追加した順番がそのまま維持されます。 イミュータブル(変更不可):一度作成したタプルの要素は、後から追加・削除・変更できません。 任意の型を格納可能:数値