Pythonでコードを書いていたら、配列から1つ飛びに値を取得したくなりました。
調べてみたら、拍子抜けするほど簡単にできたのでご紹介します。
配列から1つ飛びに値を取得するには?
スライスを使います。
具体的には、添字を「[::2]」と書きます。
a = [1,2,3,4,5,6,7,8,9]
print(a[::2])
# ⇒ [1, 3, 5, 7, 9]
スライスの基本構文は?
「[start:end:step]」と書きます。
- start:開始のインデックスを設定します。省略すると要素の最初になります。
- end:終了のインデックスを設定します。省略すると要素の最後になります。
- step:増減値を設定します。省略すると飛ばすことなく全ての要素を取得します。
例:インデックス1から6まで、1つ飛ばしで値を取得する
a = [1,2,3,4,5,6,7,8,9]
print(a[1:6:2])
# ⇒ [2, 4, 6]
例:配列を逆順で取得する
a = [1,2,3,4,5,6,7,8,9]
print(a[::-1])
# ⇒ [9, 8, 7, 6, 5, 4, 3, 2, 1]
余談
文字列に対してスライスを使うこともできます。
そこで思いついたのが、バビ語の変換。
日向坂46齊藤京子公式ブログのタイトルを変換するコードを書いてみました。
a = 'こぼんぶにびちびはば'
print(a[::2])
# ⇒ こんにちは
バビ語に促音(そくおん)や拗音(ようおん)が入っている場合、このコードは使えません。
まとめ
Pythonのスライスを使えば、1つ飛ばしに配列の値を取得することができます。
JavaScriptでは「slice()」と書きますが、Pythonではその文字すら省略できるとは。あまりに簡単で驚いてしまいました。