Python でリストを反転する

Rayven Esplanada 2023年12月11日
  1. Python でリストを反転させるには range() を使用する
  2. Python の while ループによるリストの反転
  3. Python でスライス演算子を使ってリストを反転させる
  4. Python でリストを反転させるには reversed() を使用する
Python でリストを反転する

このチュートリアルでは、Python でリストを反転させる方法の様々な方法を説明します。

リストの反転は、プログラミングを学ぶ際に経験する最も一般的なスタータープログラミングの問題の一つです。Python では、リストを反転させる簡単な方法がいくつかあります。

Python でリストを反転させるには range() を使用する

range() は、数値の範囲のリストを出力する Python の組み込み関数です。

range() の構文

range(start, stop, step)

この関数は 3つの引数を持ちます。主な必須引数は第 2 引数の stop であり、どこで停止したいかを示す数値です。start はカウントを開始する場所を指定し、step はシーケンスの増分を指定します。

start はカウントを開始する場所を指定し、step はシーケンスの増分を指定します。range() を用いて 5 で停止するリストを作成するには、停止値は 6 でなければならません。

numbers = list(range(6))
print(numbers)

出力:

[0, 1, 2, 3, 4, 5]

このリストを反転させるには、startstep の引数を指定する必要があります。

start は 5 に設定され、step-1 に設定されています。引数 stop-1 に設定する必要があります。これは、0 で停止したいからである(stop のオフセットは 1 である)。

numbers = list(range(5, -1, -1))
print(numbers)

出力:

[5, 4, 3, 2, 1, 0]

Python の while ループによるリストの反転

新しいリストを逆順に作成したい 10 個の乱数整数のリストを宣言します。

numbers = [66, 78, 2, 45, 97, 17, 34, 105, 44, 52]

リストの上に while ループを使って逆順に出力します。まず、リストのサイズを取得し、リストの最後の要素を指すように 1 で差し引きます。また、前のリストの新しい逆バージョンを格納するために空のリストを宣言してみましょう。

idx = len(numbers) - 1
newList = []

while ループを使って反復処理を行い、新しいリストの各要素を 0 になるまで idx をデクリメントしながら格納します。

while idx >= 0:
    newList.append(numbers[idx])
    idx = idx - 1

print(newList)

出力:

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Python でスライス演算子を使ってリストを反転させる

リストをループさせたくない場合は、slice 演算子を使用して配列のインデックスを 1 ずつ減少させます。

range() と同様に、スライス演算子は 3つの引数を受け付けます。startstopstep です。

最初の 2つの引数は空白のままにしておくと配列全体をカバーし、step の値を -1 に設定すると、配列の末尾から開始して毎回 1 ずつデクリメントします。

newList = numbers[::-1]
print(newList)

出力:

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Python でリストを反転させるには reversed() を使用する

Python でリストを反転させるもう一つの簡単な方法は、組み込みの関数 reversed() を使用することです。この関数はリストの引数を受け取り、反転したリストのイテレータを返します。

上記の numbers と同じ例を用いて、この関数を用いてリストを反転させます。また、reversed() の戻り値をリストに格納するために、list() で関数をラップすることも忘れないでください。

newList = list(reversed(numbers))
print(newList)

あるいは、for ループを使って反転したリストを繰り返し処理して newList に直接格納することもできます。

newList = [num for num in reversed(numbers)]
print(newList)

どちらの解決策の出力も同じになります。

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

要約すると、Python は関数 reversed() を利用してリストを反転させる簡単な方法を提供しています。また、forwhile ループを使って手動でリストを反転させることもできます。Python には、slice 演算子を使いこなせれば一行でリストを反転させる簡単な方法もあります。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python List