Pythonでリスト内の隣接する要素を取得する方法
Pythonプログラミングにおいて、リスト内の各要素に対して「隣接する要素(直前・直後の値)」を取得したい場面は少なくありません。本記事では、組み込み関数 enumerate とシンプルな反復処理を組み合わせて、隣接要素を求めるメソッドを定義し、その結果を表示する方法を解説します。
サンプルコード
以下は、リスト内の隣接する要素を取得する実装例です。
def find_adjacent_elements(my_list):
my_result = []
for index, ele in enumerate(my_list):
if index == 0:
my_result.append((None, my_list[index + 1]))
elif index == len(my_list) - 1:
my_result.append((my_list[index - 1], None))
else:
my_result.append((my_list[index - 1], my_list[index + 1]))
return my_result
my_list = [13, 37, 58, 12, 41, 25, 48, 19, 23]
print("The list is:")
print(my_list)
print("The result is :")
print(find_adjacent_elements(my_list))
実行結果
The list is: [13, 37, 58, 12, 41, 25, 48, 19, 23] The result is : [(None, 37), (13, 58), (37, 12), (58, 41), (12, 25), (41, 48), (25, 19), (48, 23), (19, None)]
コードの解説
find_adjacent_elementsという名前のメソッドを定義し、引数としてリストを受け取ります。結果を格納するための空のリストを作成します。
enumerateを使って各要素とインデックスを同時に取得しながら反復処理を行い、インデックスの位置に応じて出力内容を決定します。先頭の要素(インデックスが0)の場合は、隣接するのは次の要素だけなので、タプル
(None, 次の要素)を結果リストに追加します。末尾の要素(インデックスが「リストの長さ − 1」と一致)の場合は、直前の要素だけが存在するため、タプル
(前の要素, None)を追加します。それ以外の中間の要素については、直前と直後の両方の要素を含むタプルを追加します。
メソッドの外側で対象となるリストを定義し、コンソールに表示します。
引数を渡してメソッドを呼び出し、得られた結果をコンソールに出力します。
注意点
この実装では、リストの要素数が1つしかない場合、index == 0 の分岐で my_list[index + 1] にアクセスしようとして IndexError が発生します。実際に使用する際は、リストの長さが2以上であることを事前に確認するか、要素数が不足している場合のエラー処理を追加しておくと安全です。
-
Pythonでインデックスに基づいてネストされたリストに要素を加算する方法
Pythonでは、リストの中にさらにリストを入れた「ネストされたリスト(入れ子構造のリスト)」を作成できます。本記事では、シンプルなリストの各要素を、ネストされたリストの対応する要素に加算する方法を解説します。リスト同士の長さが異なる場合、短い方のリストの長さが結果のリストの最大長となります。以下に、この処理を実現する複数の方法を紹介します。forループを使用する方法この方法では、短い方のリストの長さを取得し、その要素を順番にループ処理しながら、大きい方のリストの対応する要素に加算していきます。各要素はappend()関数を使って結果リストに追加します。コード例simple_list = [2
-
【初心者向け】Pythonでリストのサイズ(要素数)を取得する方法
リスト(list)は、Pythonにおける代表的なコレクション型のデータ構造の一つです。リストの要素は後から変更でき、重複した値を持つこともできます。本記事では、Pythonでリストのサイズ(長さ)を取得する方法を解説します。具体的には、重複の有無にかかわらず、リストに含まれる全要素の数をカウントする方法を紹介します。リストの長さを取得する基本:len()関数Pythonでリストの要素数を取得するには、組み込み関数の len() を使用します。len() はリストだけでなく、タプル・文字列・辞書などさまざまなコレクションに対しても利用できる汎用的な関数です。サンプルコード以下の例では、「day