Pythonでタプルのリストから連続するN番目の列の差分を求める方法
Pythonでタプルのリストを扱う際、「隣り合う要素同士のN番目の列(インデックス)の値の差」を求めたいケースがあります。例えば、時系列データや座標データなど、複数の数値を持つレコードが並んだデータから、特定の列に注目して変化量を計算したい場合などです。
このような処理は、リストを順番に反復処理しながら、組み込み関数 abs() とリストメソッド append() を組み合わせることで簡単に実現できます。
abs() 関数は数値の絶対値(正の値)を返し、append() メソッドはリストの末尾に要素を追加します。差分の大きさだけが必要な場合は、絶対値を取ることで符号を気にせず結果を得られます。
実装例
以下に、具体的なコードとその実行結果を示します。
my_list = [(67, 89, 32), (11, 23, 44), (65, 75, 88)]
print("The list is : ")
print(my_list)
print("The value of k has been initialized")
K = 1
my_result = []
for idx in range(0, len(my_list) - 1):
my_result.append(abs(my_list[idx][K] - my_list[idx + 1][K]))
print("The resultant list of tuple is : ")
print(my_result)出力
The list is : [(67, 89, 32), (11, 23, 44), (65, 75, 88)] The value of k has been initialized The resultant list of tuple is : [66, 52]
コードの解説
まず、3つのタプルからなるリストを定義し、コンソールに表示します。
注目する列のインデックス K を 1 として初期化します。この場合、各タプルの2番目の要素(インデックス1)が比較対象となります。
結果を格納するための空のリストを用意します。
range(0, len(my_list) - 1)を使ってリストを反復処理し、現在の要素と次の要素の K 番目の値の差をabs()で絶対値として計算します。計算した差分を
append()で空のリストに追加していきます。最後に、結果のリストをコンソールに出力します。
この例では、インデックス1の列に注目すると、89 → 23 の差は 66、23 → 75 の差は 52 となるため、結果として [66, 52] が出力されます。
補足:リスト内包表記を使ったより簡潔な書き方
同じ処理は、リスト内包表記を使うことでより簡潔に記述できます。
my_result = [abs(a[K] - b[K]) for a, b in zip(my_list, my_list[1:])] print(my_result) # 出力: [66, 52]
zip(my_list, my_list[1:]) を使うことで、隣り合うタプル同士をペアとして取り出せるため、インデックス管理の手間が省け、可読性も向上します。
まとめ
タプルのリストから特定の列の連続する差分を求めるには、for ループと abs()・append() を組み合わせる方法が基本です。また、zip() とリスト内包表記を活用すれば、よりPythonicで短いコードに書き換えることもできます。用途に応じて使い分けるとよいでしょう。
-
Pythonでリストをタプルに変換する方法:tuple()関数と*演算子の使い方
Pythonでデータ分析を行っていると、リスト(list)をタプル(tuple)に変換する必要が生じることがあります。たとえば、後続の処理コードがタプル型を前提としており、現在のリストにはそのタプルに必要な値が格納されているようなケースです。この記事では、Pythonでリストをタプルに変換する代表的な2つの方法を、サンプルコード付きでわかりやすく解説します。方法1:tuple()関数を使う最もシンプルで直感的な方法は、組み込み関数 tuple() をリストに直接適用することです。これにより、リストのすべての要素がそのままタプルへ変換されます。サンプルコードlistA = [Mon, 2, Tu
-
Pythonのリストとタプルの違いとは?特徴と使い分けのポイントを解説
Pythonでは複数の値をまとめて扱えるシーケンス型として、リスト(list)とタプル(tuple)がよく使われます。どちらも似たような役割を持っていますが、決定的な違いがあります。それはタプルが「不変(immutable)」であるという点です。 最大の違い:タプルは変更できない タプルは一度作成すると、その中の値を後から変更することができません。一方、リストは「可変(mutable)」なので、作成後でも要素の追加・削除・変更が自由に行えます。 # リスト:変更可能 my_list = [1, 2, 3] my_list[0] = 10 # 正常に変更できる # タプル:変更不可 my_