Pythonでリスト(配列)の要素を左に回転させる方法を徹底解説
Pythonでは、リスト(配列)の要素を左に回転させたい場合、リストを反復処理しながら、指定した回数だけ要素の位置をずらしていくことで実現できます。
本記事では、for文を使った基本的な左回転の実装方法を、サンプルコードと実行結果とともにわかりやすく解説します。さらに、スライスを使ったより簡潔な書き方もあわせてご紹介します。
サンプルコード
my_list = [11, 12, 23, 34, 65]
n = 3
print("元のリスト:")
for i in range(0, len(my_list)):
print(my_list[i])
for i in range(0, n):
first_elem = my_list[0]
for j in range(0, len(my_list)-1):
my_list[j] = my_list[j+1]
my_list[len(my_list)-1] = first_elem
print()
print("左回転後のリスト:")
for i in range(0, len(my_list)):
print(my_list[i])
実行結果
元のリスト: 11 12 23 34 65 左回転後のリスト: 34 65 11 12 23
コードの解説
まず、整数値を格納したリスト「my_list」を定義し、コンソールに表示します。
変数「n」には、左に回転させる回数を設定します。ここでは3回としています。
外側のfor文で回転回数だけ繰り返し処理を行い、内側のfor文で各要素を1つ前のインデックスへ順に移動させていきます。
内側のループを抜けた時点で、あらかじめ退避しておいた先頭要素(0番目の要素)をリストの末尾に代入します。これにより、1回分の左回転が完了します。
この一連の処理をn回繰り返し、最終的な結果をコンソールに出力します。
スライスを使ったより簡潔な方法
実は、Pythonのスライス(スライシング)を活用すれば、同じ処理をさらにシンプルに記述できます。
my_list = [11, 12, 23, 34, 65] n = 3 my_list = my_list[n:] + my_list[:n] print(my_list) # 出力: [34, 65, 11, 12, 23]
「n番目以降の要素」と「先頭からn個の要素」をつなぎ合わせることで、一括して左回転を実現できます。ネストしたfor文が不要になるため、コードが短くなり、可読性やパフォーマンスの面でも有利です。
まとめ
リストの左回転は、for文による要素の入れ替えでも実装できますが、Pythonのスライス機能を使えばわずか1行で記述できます。学習目的であればロジックを理解するためにfor文での実装も有用ですが、実際の開発ではスライスを使った方法がおすすめです。用途に応じて使い分けましょう。
-
Pythonで配列の合計を求める方法を徹底解説
この記事では、Pythonを使って配列(リスト)の合計を求める方法について詳しく解説します。 問題文 問題: 配列が与えられたとき、その配列に含まれるすべての要素の合計を計算してください。 最も基本的なアプローチは、配列全体を走査し、各インデックスの要素を順番に加算していく方法です。ここでは、まず組み込み関数を活用したシンプルな実装例を見ていきましょう。 方法1:組み込み関数 sum() を使う Pythonには、イテラブルなオブジェクトの合計を一発で計算できる組み込み関数 sum() が用意されています。これを使えば、コードは非常に簡潔になります。 サンプルコード # 合計を求める関数 de
-
Pythonで配列(リスト)の合計を求める方法をわかりやすく解説
この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に