LoginSignup
0
1

More than 5 years have passed since last update.

No.046【Python】range関数について

Posted at

python-logo-master-v3-TM-flattened.png

今回は、range関数ついて書いていきます。

I'll write about "range function".

■ Python3における range()関数

  range function on Python3

 ここでは、Python3におけるrange関数の使い方を紹介する
>>> # Python3には x range()はない
>>> # range()のみ
>>> 
>>> print(xrange(3))
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    print(xrange(3))
NameError: name 'xrange' is not defined
 range():range型のオブジェクトを返す
>>> print(range(5))
range(0, 5)
>>> 
>>> print(type(range(5)))
<class 'range'>
>>> 
>>> for i in range(5):
    print(i)


0
1
2
3
4
 リストを生成したい場合はlist()を使う。
>>> print(list(range(5)))
[0, 1, 2, 3, 4]

■ 連番(0から任意の値までの): range(stop)

 Serial numbers(from 0 to the optional value)

例:range(stop)の引数に整数を1つ指定
  0 ≦ i < stopの連番を生成
>>> print(list(range(5)))
[0, 1, 2, 3, 4]
>>> 
>>> print(list(range(15)))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
 負の値指定の場合、空となる
>>> print(list(range(-5)))
[]

■ 任意の範囲内の連番: range(start / stop)

 Serial numbers within the optional range

range(start, stop):引数に整数を2つ指定
start ≦ i < stopの連番を生成
stop ≦ startの場合は、空となる
>>> print(list(range(5, 10)))
[5, 6, 7, 8, 9]
>>> 
>>> print(list(range(10, 5)))
[]
>>> 
>>> print(list(range(-5, 5)))
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]
>>> 
>>> print(list(range(5, -5)))
[]
Startを0としたrange(0, stop)はrange(stop)と等価
>>> print(range(0, 5) == range(5))
True

■ 任意範囲または増分の等差数列: range(start, stop, step)

 Arithmetic progression for the optional range or incremental

range(startm stop, step);引数に整数を3つ指定
start ≦ i < stop
stepずつ増加する等差数列を生成
stepに負の値を指定:減少
start ≦ stopでない場合、空となる
>>> print(list(range(1, 10, 4)))
[1, 5, 9]
>>> 
>>> print(list(range(10, 4, 2)))
[]
>>> 
>>> print(list(range(10, 4, -2)))
[10, 8, 6]
>>> 
>>> print(list(range(1, 10, -4)))
[]
stepを1としたrange(start, stop, 1)
range(start, stop)と等価。
>>> print(range(4, 10, 1) == range(4, 10))
True
startを0としたrange(0, stop, 1)
range(0, stop)およびrange(stop)と等価
>>> print(range(0, 10, 1) == range(0, 10) == range(10))
True

■ 逆順range関数

 Reverse ordered range function

第三引数stepに負の値を指定:減少する連番および等差数列を生成
任意のrange()の逆順も生成可能
しかし、start・stopと合わせて適切な値を指定が必要
>>> print(list(range(4, 10, 3)))
[4, 7]
>>> 
>>> print(list(range(7, 1, -2)))
[7, 5, 3]
reversed()を使うと結果は、逆順となる
>>> print(list(reversed(range(4, 10, 3))))
[7, 4]
reversed()の場合:for文で使う場合、list()は不要。
>>> for i in reversed(range(3, 12, 2)):
    print(i)


11
9
7
5
3

■ 浮動小数点数(float)の場合

 In case of float

整数(integer)のみ、range()の引数に指定可能
浮動小数点数(float)指定:エラー
>>> print(list(range(0.1, 1.0, 0.4)))
Traceback (most recent call last):
  File "<pyshell#59>", line 1, in <module>
    print(list(range(0.1, 1.0, 0.4)))
TypeError: 'float' object cannot be interpreted as an integer
浮動小数点数の等差数列生成の場合:リスト内包表記
>>> print([i / 10 for i in range(4, 12, 2)])
[0.4, 0.6, 0.8, 1.0]
浮動小数点数との積を使用時、誤差が生じる場合がある
>>> print([i * 0.1 for i in range(4, 10, 2)])
[0.4, 0.6000000000000001, 0.8]
>>> 
>>> print([round(i * 0.1, 1) for i in range(4, 10, 2)])
[0.4, 0.6, 0.8]
NumPyの場合:np.arange()
np.arange()の引数の指定は、range()と同様
浮動小数点数(float)を指定可能。
>>> import numpy as np

>>> print(np.arange(5))
[0 1 2 3 4]
>>> 
>>> print(np.arange(34, 10))
SyntaxError: invalid syntax
>>> 
>>> print(np.arange(2, 10))
[2 3 4 5 6 7 8 9]
>>> 
>>> print(np.arange(2, 10, 1))
[2 3 4 5 6 7 8 9]
>>> 
>>> print(np.arange(0.4, 1.0, 0.1))
[0.4 0.5 0.6 0.7 0.8 0.9]

随時に更新していきますので、
定期的な購読をよろしくお願いします。
I'll update my article at all times.
So, please subscribe my articles from now on.

本記事について、
何か要望等ありましたら、気軽にメッセージをください!
If you have some requests, please leave some messages! by You-Tarin

0
1
1

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
0
1