Pythonプログラミング初心者に向けて、引き続きリストのスライスについて解説します。

前回、リストのスライスの基礎を勉強しました!
リストのスライスはまだまだ奥が深いんですか?

リストのスライスは奥が深いんです!
前回のリストのスライスの基礎を理解できてきたなら他の使い方もたくさんあるので学んでいきましょう!
リストのスライス操作の自信がない人は前回の記事を参照してくださいね!
Pythonでは、リストを効果的に操作するための機能がたくさんあります。
その中でも、リストのスライスは便利で奥が深い機能です。
リストのスライスは大変よく使うのでこの記事の内容もしっかり身に着けていきましょう!
負のインデックスを使ったスライス
以前、負のインデックスを用いたインデックス指定について学びました。
リストのスライスでも負のインデックスを用いることができます。
負のインデックスを用いる場合でも、リストの名前に続けて角括弧を使い、開始位置と終了位置を指定します。
ではプログラムの例で、負のインデックスを用いたスライスの使用方法を具体的に見ていきましょう!
fruits = ['cherry', 'pineapple', 'orange', 'apple', 'banana']
# 負のインデックスを使用してスライスすることもできます
print(fruits[-3:-1])
# 開始位置・終了位置の省略もできます
print(fruits[-2:])
# 実行結果
# ['orange', 'apple']
# ['apple', 'banana']
このプログラムではまず変数名fruitsのリストを作成しています。
続いてfruits[-3:-1]の部分でスライスを用いて開始位置-3から終了位置-1までの要素を取り出しています。
注意点としては、負のインデックスを用いた場合にも終了位置の1つ手前の要素まで取り出されます。
したがって、終了位置-1の1つ手前の要素('apple')までの要素が取り出されます。
また正のインデックスを用いた場合と同様に開始位置・終了位置の省略も可能です。

負のインデックスを用いてfruitsのリストから一部の要素を取り出すことができました!
インデックス番号は正の値と負の値を組み合わせることができるんですか?

正の値と負の値を組み合わせた場合もスライスできますよ!
以下のプログラムを参照してみてください。
fruits = ['cherry', 'pineapple', 'orange', 'apple', 'banana']
# 負のインデックスのみ使用した場合
print(fruits[-3:-1])
# 正負のインデックスを組み合わせた場合
print(fruits[2:-1])
# 実行結果
# ['orange', 'apple']
# ['orange', 'apple']
2つのスライス結果は同じ結果になったでしょうか。
このように正負のインデックスを組み合わせた形でも使用できますので、自由に扱えるようにしていきましょうね!
ステップ値を指定
スライスでは、オプションとしてステップ値を指定することもできます。
ステップ値を指定すると、指定された間隔で要素をスライスします。
ステップ値の指定は、スライスの構文の最後にコロンを使って行います。
list[start:end:step]
ここで、start
はスライスの開始位置を示し、end
はスライスの終了位置を示し、stepはスライスのステップ値を示しています。
以下のプログラムで理解していきましょう!
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# ステップ値を指定してスライスする
print(nums[1:9:2])
# 実行結果
# [1, 3, 5, 7]
実行結果を確認いただくと、開始位置(1番目の要素)から終了位置(9番目の要素)までの要素が取り出されていますが、指定したステップ値2刻みの要素が取得されています。
開始位置のインデックス番号1にあたる「1」が取り出されて、ステップ値2刻みでインデックス番号が指定されます。
そのため、続いてインデックス番号3の「3」、インデックス番号5の「5」、インデックス番号7の「7」が取り出されます。
したがって、取り出された値は「1,3,5,7」となります。
ステップ値を設定する場合も、設定しない場合と同様に終了位置の値の1つ手前までの要素が取り出されます。
したがって、「9」の値は取り出されません!
もう一つ例を見てみましょう!
nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]
# ステップ値3に指定してスライス
print(nums[1:8:3])
# 実行結果
# [20, 50, 80]
実行結果を確認いただくと、開始位置(1番目の要素)から終了位置(8番目の要素)までの要素で、指定したステップ値3刻みの要素が取得されています。
開始位置のインデックス番号1にあたる「20」が取り出されて、ステップ値3刻みでインデックス番号が指定されます。
そのため、続いてインデックス番号4の「50」、インデックス番号7の「80」が取り出されます。
したがって、取り出された値は「20,50,80」となります。

ステップ値を用いてリストから飛び飛びに要素を取り出すことができました!
以前よりかなり自由に要素を取り出せるようになりました!

ステップ値の指定も併せてリストのスライスをかなり使いこなせるようになってきたようですね!
最後に確認問題を解いて理解を深めていきましょう!
確認問題
①文字列"a","b","c","d","e","f","g","h","i"を格納したリストalphabetsを作成してください。
②負のインデックスを用いて、alphabetsから"g","h"を取り出して出力してください。
③負のインデックスを用いて、alphabetsから"d","e","f"を取り出して出力してください。
④リストのスライスでステップ値を用いて、alphabetsから"c","e","g"を取り出して出力してください。
⑤リストのスライスでステップ値を用いて、alphabetsから"b","e","h"を取り出して出力してください。
確認問題 解答例
# ①文字列"a","b","c","d","e","f","g","h","i"を格納したリストalphabetsを作成
alphabets = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
# ②負のインデックスを用いて、alphabetsから"g","h"を取り出して出力
print(alphabets[-3:-1]) #print(alphabets[6:-1])なども可
# ③負のインデックスを用いて、alphabetsから"d","e","f"を取り出して出力
print(alphabets[3:-3]) #print(alphabets[-6:-3])なども可
# ④リストのスライスでステップ値を用いて、alphabetsから"c","e","g"を取り出して出力
print(alphabets[2:7:2])
# ⑤リストのスライスでステップ値を用いて、alphabetsから"b","e","h"を取り出して出力
print(alphabets[1:9:3])
# 実行結果
# ['g', 'h']
# ['d', 'e', 'f']
# ['c', 'e', 'g']
# ['b', 'e', 'h']
負のインデックスなどの用い方によって、解答とは異なる出力も可能です。
実行結果が同じであればどのような書き方をしていただいても問題ありません!
また、解答できた方も負のインデックスを使うなどして同じ実行結果を違う書き方で出力するチャレンジをしてみてください!
まとめ
Pythonのリストのスライスについてさらに詳しく説明しました。
スライスはリストの一部を取り出すための便利な機能でしたが、負のインデックスを用いることもできることを学びました。
さらに、ステップ値を指定することで要素の間隔を調整することもできます。
リストのスライスは、Pythonプログラミングにおいて非常に重要な要素ですので、ぜひ積極的に活用してみてください。
このサイトの記事一覧へは以下へアクセス!
コメント