Pythonでリストを分割し、先頭部分を末尾に移動するプログラムの書き方
Pythonでは、リストを分割して先頭部分をリストの末尾に移動したい場合、シンプルなループ処理とインデックス操作を組み合わせることで実現できます。
リストは整数、浮動小数点数、文字列など、異なるデータ型の値を混在して格納できる柔軟なデータ構造です。本記事では、そのようなリストに対して分割と回転を行うプログラムを紹介します。
サンプルコード
def split_list(my_list, n_val, k_val):
for i in range(0, k_val):
first_val = my_list[0]
for k in range(0, n_val-1):
my_list[k] = my_list[k + 1]
my_list[n_val-1] = first_val
my_list = [34, 42, 56, 78, 9, 0, 23]
list_len = len(my_list)
pos = 3
print("The list is :")
print(my_list)
print("The split_list method is being called")
split_list(my_list, list_len, pos)
for i in range(0, list_len):
print(my_list[i])
実行結果
The list is : [34, 42, 56, 78, 9, 0, 23] The split_list method is being called 78 9 0 23 34 42 56
コードの解説
- split_listメソッドの定義:リスト本体、リストの長さ(n_val)、移動する位置(k_val)の3つを引数として受け取ります。
- 分割と回転の処理:k_valの回数だけ繰り返し処理を行い、各回で先頭の要素を一時変数に保存します。その後、残りの要素を1つずつ前へずらし、保存しておいた先頭の要素をリストの末尾に代入します。これにより、リストの先頭部分が末尾へ移動します。
- リストの作成と表示:7つの整数を含むリストを作成し、コンソールに出力します。
- メソッドの呼び出し:リスト、長さ、分割位置を引数としてsplit_listメソッドを呼び出します。
- 結果の出力:処理後のリストの全要素を順番に表示します。
補足:スライスを使ったより簡潔な方法
上記の方法は要素を1つずつ移動するため、計算量はO(n×k)になります。Pythonのスライス機能を使えば、より簡潔かつ効率的に同じ操作を実現できます。
my_list = [34, 42, 56, 78, 9, 0, 23] pos = 3 result = my_list[pos:] + my_list[:pos] print(result) # [78, 9, 0, 23, 34, 42, 56]
このように、my_list[pos:]で分割位置以降の要素を、my_list[:pos]で先頭から分割位置までの要素を取得し、両者を連結することで、先頭部分を末尾に移動した新しいリストを一度に作成できます。
-
Pythonで配列の合計を求める方法を徹底解説
この記事では、Pythonを使って配列(リスト)の合計を求める方法について詳しく解説します。 問題文 問題: 配列が与えられたとき、その配列に含まれるすべての要素の合計を計算してください。 最も基本的なアプローチは、配列全体を走査し、各インデックスの要素を順番に加算していく方法です。ここでは、まず組み込み関数を活用したシンプルな実装例を見ていきましょう。 方法1:組み込み関数 sum() を使う Pythonには、イテラブルなオブジェクトの合計を一発で計算できる組み込み関数 sum() が用意されています。これを使えば、コードは非常に簡潔になります。 サンプルコード # 合計を求める関数 de
-
Pythonで配列(リスト)の合計を求める方法をわかりやすく解説
この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に