2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python リストのインデックスをずらす!!

Last updated at Posted at 2019-09-14

#はじめに

未来電子テクノロジーでインターンをしているsaijoと申します!

プログラミング初心者であるため、内容に誤りがあるかもしれません。
もし、誤りがあれば修正するのでどんどん指摘してください。

この記事では、Pythonによる「リストのインデックスずらし」に関していくつか例を挙げていこうと思います!

#最初の準備

まずはずらしたいリストをキーボードで作成できるようにしましょう!

python.py
n = int(input())
arr = list(map(int, input().split()))
result = leftShiftIndex(arr, n)
print(result)

ここでleftShiftIndex()はこの後定義する関数です。
またnはどれだけ要素をシフトさせるのかを表す変数です。

#パターンその1

それでは実際に関数leftShiftIndex()を定義していきます!

python.py
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特有の組み込み関数やメソッドを使えば、もっとコードや処理時間を短縮できるのではないかと思い、次に作成したコードが以下のものです。

python.py
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に対して正常な機能を果たすのかを説明していきます。

python.py
def leftShiftIndex(arr, n):
   result = arr[n:] + arr[:n]
   return result

特徴

  • これぞPython!!!
  • 極限までコードを短くした。
  • nの値の大きさに関わらず実行可能。

どうでしょうか。
パターンその1であれほど論理的コードを書いていたのが馬鹿らしく思えるくらいスッキリしましたね!(笑)

#まとめ

C言語経験者から言わせてもらうと、最初は「こんなの外道だ!もっと内部処理がわかりやすいコードを書くべきだ!」と強がっていましたが、これがPythonの特徴なんです!

確かにC言語のようにプログラムのフローを明瞭に掴むことは大切なのですが、組み込み関数を用いてコードや処理時間の短縮ができた方が便利ですよね!

この先多様なプログラミング言語を習得しようと思ってる人は、その言語の特徴(Pythonでいうモジュール・組み込み関数)をよく理解して学んで行くといいと思います。

以上、Pythonによるリストのインデックスずらし解説でした!
最後までご覧いただきありがとうございます!!

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?