Re:ゼロから始める文系プログラマ

文系プログラマーがブログを書いてみた。

【Python・データ構造】~レンジ~

f:id:ShotaNukumizu_1000:20210405111435p:plain

おはようございます!Shotaです。今日もPythonに関する記事を書いていきます。

今日は「レンジ」について説明していきたいと思います。

 

【目次】

 

レンジ

 Pythonでは、もう一つシーケンスのオブジェクトである「レンジ(range)」があります。レンジは、一定の範囲内の整数の集合をまとめて扱うためのものです。例えば、「5から10までの整数」というようなものを値として扱いたいときに利用します。

レンジは整数の範囲を扱うためのコンテナです。実数などの値をレンジで扱うことはできません。レンジは以下のように作成します。

 

range(終了値)

 

rangeの後ろの()の中に整数を指定すると、ゼロからその値の手前までの範囲を示すレンジを作成できます。この場合の「終了値」は、終了値そのものを含めないことについては十分に注意して下さい。

 

range(開始値、終了値)

 

例えば、「5~10の範囲」というように、ある値から別の値までの範囲を示すレンジを作成します。

 

range(開始値、終了値、ステップ)

 

指定した範囲内で、「いくつおきに値を取り出す」というようなレンジです。ステップは値の間隔を意味します。

レンジのデータは、開始値とステップは省略して書き出すことができます。その際には、開始値は0、ステップは1と自動的に指定されます。(開始値に1、ステップに0とわざわざ書く必要はありません)

 

f:id:ShotaNukumizu_1000:20210414080503p:plain

 

レンジもリストとタプルと同様に、保管されている値にインデックス番号が割り振られています。[]を使い、番号を指定することで特定の値を出力できます。

 

f:id:ShotaNukumizu_1000:20210414075434p:plain

 

▼実行結果

f:id:ShotaNukumizu_1000:20210414075502p:plain

 

レンジはインデックスで値を取り出すことはできますが、変更することはできません。レンジもタプルと同様に「イミュータブル(値を変更できない)」だからです。

レンジはタプルと同じく、値を取り出すことしかできないことを覚えておきましょう。

 

レンジとシーケンス演算

レンジには足し算や掛け算のような算術演算はサポートしておりません。しかし、レンジもシーケンスの仲間です。したがって、レンジはシーケンス演算をサポートしています。簡単に整理しておきましょう。

 

f:id:ShotaNukumizu_1000:20210414080214p:plain


 ▼実行結果

f:id:ShotaNukumizu_1000:20210414080312p:plain

 

レンジは、これだけ見ても使い方がわからないかもしれません。レンジは同じ処理を何回も行う「繰り返し」と呼ばれる構文で大活躍します。(詳細は後日説明します。)

 

シーケンス間の変換

リスト、レンジ、タプルの三つはどれもシーケンスです。すべてインデックスで値が保存されており、インデックスで値を取り出すことができます。また、シーケンス演算にも対応しており、使い方も非常に似ています。ところが、細かいはたらきは異なっておりますのでまったく同じものとして扱うことはできません。

例えば、リストとタプルを「+」演算子で結合できません。このような場合、タプルからリストに変換する作業が必要になっていきます。

 

値をリストに変換する:list(値)

 

値をタプルに変換する:tuple(値)

 

値をレンジに変換する:range(値)

 

()の中に、変換したい値を書いて実行すれば指定の型に変換できます。

以下のようなコードを書いて実行してみましょう。

 

f:id:ShotaNukumizu_1000:20210414081429p:plain

 

▼実行結果

f:id:ShotaNukumizu_1000:20210414081457p:plain

 

タプル、レンジ、リストの値をそれぞれ用意して、それらをリストにまとめるプログラムを実行しています。この際に、タプルとレンジをリストへキャスト(値の型を変更する)していることがわかります。

このように出力すると、すべてのデータがリストになっていることがわかります。

まとめ

【本日のまとめ】

  •  レンジは指定した範囲内の数列を扱うもの。range()で作る。保管されている値は、インデックスで取り出すことができる
  • range(開始値、終了値、ステップ)で指定された範囲までの整数を出力できる。開始値とステップは省略すると、それぞれ0、1として出力される
  • レンジはタプルと同様に、値を自由自在に変更することができない
  • リスト、タプル、レンジはそれぞれlist()、tuple()、range()で相互に変換できる

 

本ブログでは、こんな感じでPythonにまつわる情報や基本的な知識、Pythonの操作方法やニュースをたくさん紹介していきます。毎週日曜日に、普段とは趣向を変えて有名な自己啓発本・ビジネス書を要約・考察するブログを書いていきます。

この記事がいいと思った人はSNSにシェアしてくれると非常に嬉しいです!

明日はセットについて詳しく説明していきます。

今日も最後まで読んでくださりありがとうございました!

 

 

【参考図書】

gihyo.jp