[python]range関数の使い方メモ(飛ばし・逆順・リスト化・小数)

記事内に広告が含まれています。

pythonのrange関数という組み込み関数が用意されています.

基本的な使い方

for文の中で使われるのが一番よく見られる使い方だと思います.

for i in range(5):
    print(i)
#出力
0
1
2
3
4

rangeの引数が整数値一つの場合,n は生成する個数 として解釈できます.その際,最初の値は0から数えられることに注意が必要です.

上の例は,0から数えて5つの数を生成するコードになっています.

数字飛ばしで生成する方法

一定の間隔で数字を生成するには,引数に3つの数(整数値)を入れましょう.

for i in range(0, 10, 2):
for i in range(0,10,2):
    print(i)
#出力
0
2
4
6
8

range関数の数字飛ばしを視覚的なイメージは以下の通りです.

rangeの視覚的イメージ

上のコードを例にとると,0 <= i < 10 のうち,0から2つ飛ばしで数字を生成するコードになっています.注意として,goal で指定した値は含まれないことに注意が必要です.( i の不等号にイコールはついてません.)

逆順で生成する方法

逆順にするには,rangeの step (第3引数) を負の値にすればokです.

for i in range(10, 0, -2):
    print(i)
#出力
10
8
6
4
2
逆順でのrange関数のイメージ

rangeの第一引数は始点(start), 第二引数は終点(goal)なので,range(10, 0, -2) のように左の値の方が中央の値よりも大きくなります.

リスト化する方法

以下のように,range 関数を list() で囲うだけでokです.

List = list(range(10,0,-2))
print(List)
#出力
[10, 8, 6, 4, 2]

小数を生成する方法

いくつか方法がありますが,今回は2つの方法を解説します.

range関数に小数を掛け算する方法

rangeの第3引数に小数(float)型を指定することはできません.

range関数で等間隔に数値を生成した後に小数を掛け算する必要があります.

List = []
for i in range(10):
    List.append(round(i*0.1, 1))

#もしくは
List = [round(i*0.1, 1) for i in range(10)]

#[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

round() 関数で,誤差を消しています.

numptのarange関数を使う方法

もしくは,numpyというpythonのライブラリを使うと以下の書き方も可能です.

こっちの方がrange関数と同じ感じで使えるので便利だと思います.

import numpy as np
print(np.arange(0,1,0.2))

#[0.  0.2 0.4 0.6 0.8]

まとめ

  • range(n) -> 0始まりで n 個の整数値を生成
  • range(start, goal, step) -> stepで指定した数飛ばしで,startとgoalの中の整数値を生成

Python
スポンサーリンク