#はじめに
未来電子テクノロジーでインターンをしているsaijoと申します!
プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。
この記事では、Pythonによる「リストのインデックスずらし」に関していくつか例を挙げていこうと思います!
#最初の準備
まずはずらしたいリストをキーボードで作成できるようにしましょう!
n = int(input())
arr = list(map(int, input().split()))
result = leftShiftIndex(arr, n)
print(result)
ここでleftShiftIndex()はこの後定義する関数です。
またnはどれだけ要素をシフトさせるのかを表す変数です。
#パターンその1
それでは実際に関数leftShiftIndex()を定義していきます!
def leftShiftIndex(arr, n):
arr_len = len(arr)
for _ in range(n):
temp = arr[0]
for i in range(arr_len-1):
arr[i] = a[i+1]
a[arr_len-1] = temp
return arr
特徴
- C言語的な記述の仕方。
- nの値が大きすぎるとTime is overとなってしまう。
- forの入れ子アリ。
プログラミングをC言語から始めた僕にとって一番しっくりくるコードがこれでした。
でもこのコードだと莫大な量のデータを処理する際にランタイムエラーとなってしまうという問題点があります。
#パターンその2
そこでPython特有の組み込み関数やメソッドを使えば、もっとコードや処理時間を短縮できるのではないかと思い、次に作成したコードが以下のものです。
def leftShiftIndex(arr, n):
for i in range(n):
temp = arr[:1]
sample_array = arr[1:]
arr = sample_array + temp
return arr
特徴
- 若干Pythonっぽい。
- nの値が大きすぎるとTime is overとなってしまう。
- forの入れ子ナシ。
いかがでしょう!
先ほどのコードと比較すると、リストのスライスを用いることでforループの入れ子がなくなりだいぶスッキリしたコードとなりました!
しかしこのコードを用いてもやはり莫大な量のnに対してはランタイムエラーとなってしまいます。
#パターンその3
では次にどのようにコードを書けば任意のnに対して正常な機能を果たすのかを説明していきます。
def leftShiftIndex(arr, n):
result = arr[n:] + arr[:n]
return result
特徴
- これぞPython!!!
- 極限までコードを短くした。
- nの値の大きさに関わらず実行可能。
どうでしょうか。
パターンその1であれほど論理的コードを書いていたのが馬鹿らしく思えるくらいスッキリしましたね!(笑)
#まとめ
C言語経験者から言わせてもらうと、最初は「こんなの外道だ!もっと内部処理がわかりやすいコードを書くべきだ!」と強がっていましたが、これがPythonの特徴なんです!
確かにC言語のようにプログラムのフローを明瞭に掴むことは大切なのですが、組み込み関数を用いてコードや処理時間の短縮ができた方が便利ですよね!
この先多様なプログラミング言語を習得しようと思ってる人は、その言語の特徴(Pythonでいうモジュール・組み込み関数)をよく理解して学んで行くといいと思います。
以上、Pythonによるリストのインデックスずらし解説でした!
最後までご覧いただきありがとうございます!!