Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリストの最初と最後の要素を取得する3つの方法

Pythonでリストを扱っていると、「先頭の要素」と「末尾の要素」だけを取り出したい場面に遭遇することがあります。リストの長さを意識しながらインデックスを操作する必要があるため、一見すると少し手間に感じるかもしれません。ここでは、誰でもすぐに使える代表的な3つのアプローチを、コード例と実行結果つきでわかりやすく解説します。いずれの方法もリストのインデックスを活用したものです。

方法1:インデックスを直接指定する

Pythonのリストでは、最初の要素には必ずインデックス「0」が割り当てられ、さらに負のインデックス「-1」を使えば最後の要素を参照できます。この仕様をそのまま利用すれば、追加の処理なしでシンプルに目的の要素を取得できます。

コード例

Alist = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu']
print('元のリスト:', Alist)

print('最初の要素:', Alist[0])
print('最後の要素:', Alist[-1])

実行結果

上記のコードを実行すると、次の出力が得られます。

元のリスト: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu']
最初の要素: Sun
最後の要素: Thu

なお、空のリストに対してこの方法を使うと IndexError が発生するため、実運用では if Alist: のようにリストが空でないかを確認してからアクセスすると安全です。

方法2:スライシングを使う

次に紹介するのは、コロンを使ったスライシング記法で要素の位置を直接指定する方法です。最初の要素は最初のコロンの前を空白にすることでアクセスでき、最後の要素は len() 関数の戻り値から1を引いた値をステップとして指定することで取得します。両方の要素を一度に取り出したい場合に便利な手法です。

コード例

Alist = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu']
print('元のリスト:', Alist)

first_last = Alist[::len(Alist)-1]
print(first_last)

実行結果

上記のコードを実行すると、次の出力が得られます。

元のリスト: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu']
['Sun', 'Thu']

方法3:forループ(リスト内包表記)を使う

最後に、in 演算子と組み合わせたループ処理で、インデックスとして「0」と「-1」を順に渡す方法を紹介します。Pythonではリスト内包表記を使えば、わずか1行で簡潔に書けるのがポイントです。

コード例

Alist = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu']
print('元のリスト:', Alist)

first_last = [Alist[n] for n in (0, -1)]
print(first_last)

実行結果

上記のコードを実行すると、次の出力が得られます。

元のリスト: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu']
['Sun', 'Thu']

まとめ

リストの先頭と末尾の要素を取得する方法として、今回は以下の3つを紹介しました。

  • インデックス指定Alist[0]Alist[-1] を使う最も基本的な方法。単独で取得したい場合に最適。
  • スライシングAlist[::len(Alist)-1] のように、両端の要素をまとめて新しいリストとして取得できる。
  • リスト内包表記[Alist[n] for n in (0, -1)] と書くことで、柔軟かつ簡潔に両方の要素を取得できる。

用途に応じて使い分ければ、より読みやすく保守しやすいPythonコードを書くことができます。

  1. Pythonでソート済み配列から要素の最初と最後の出現位置を検索する方法

    昇順にソートされた整数型配列 A が与えられているとします。この中から、指定したターゲット値が出現する開始位置と終了位置を見つける必要があります。ターゲット値が配列内に存在しない場合は [-1, -1] を返します。例えば、配列が [2,2,2,3,4,4,4,4,5,5,6]、ターゲット値が 4 である場合、値 4 はインデックス 4 〜 7 に出現するため、出力は [4, 7] となります。解法のアプローチ:二分探索を2回行うこの問題は、二分探索(バイナリサーチ)を2回実行することで O(log n) の計算量で効率的に解けます。1回目の探索で左端(最初の出現位置)を特定し、2回目の探索で

  2. Pythonでリストの最初と最後の要素を交換する方法:4つのアプローチを徹底解説

    はじめにこの記事では、リストの最初の要素と最後の要素を入れ替えるという問題に対する解決策を、4つの異なるアプローチで解説します。問題の定義与えられたリストに対して、最後の要素を最初の要素と入れ替える処理を実装します。例えば、[t, u, t, o, r, i, a, l] というリストが与えられた場合、実行後は [l, u, t, o, r, i, a, t] のように、先頭と末尾の要素が入れ替わります。それでは、以下の4つのアプローチを順番に見ていきましょう。アプローチ1:一時変数を使う基本的な方法最も基本的な方法です。リストの長さを取得し、一時変数(temp)を使って最初の要素と最後の要素