range関数の詳細


class range(start, stop[, step])
rangeコンストラクタのパラメータは整数でなければなりません(indexの特殊な方法を実装したintまたは任意のオブジェクトであってもよい).stepパラメータを省略すると、デフォルト値は1です.startパラメータを省略するとデフォルト値は0、stepがゼロの場合はValue Errorが発生します.
stepが正の値である場合、rangerコンテンツを決定する式はr[i]=start+step*iであり、i>=0であり、r[i]Stepが負の値である場合、rangeの内容を決定する式はr[i]=start+step*iのままであるが、制限条件はi>=0、r[i]>stopに変更される.
r[0]が値の制限条件に一致しない場合、rangeオブジェクトは空です.rangeオブジェクトは確かに負のインデックスをサポートしますが、正のインデックスによって決定されたシーケンスの末尾からインデックスが始まるように解読されます.
要素の絶対値はsysより大きい.maxsizeのrangeオブジェクトは許可されていますが、len()などのいくつかの特性がOverflowErrorを引き起こす可能性があります.
いくつかのrangeオブジェクトの例:
>>>
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]

rangeオブジェクトは、一般的なシーケンスのすべての操作を実現しますが、パッチおよび繰返しは除外されます(これは、rangeオブジェクトが厳格なモードに合致するシーケンスのみを表すため、繰返しおよびパッチは通常、このようなモードに違反します).
start startパラメータの値(パラメータが指定されていない場合は0)
stop stopパラメータの値
Step stepパラメータの値(パラメータが指定されていない場合は1)
rangeタイプは、通常のlistまたはtupleに比べて、start、stop、stepの値のみが保存され、必要に応じて特定の単一またはサブ範囲の値が計算されるため、rangeオブジェクトが常に一定数(小さい)のメモリを占有することが利点です.
rangeオブジェクトはcollectionsを実現する.abc.Sequence ABCは、検出、要素インデックス検索、スライスなどの特性を提供し、負のインデックスをサポートします(シーケンスタイプ-list,tuple,rangeを参照).
>>> r = range(0, 20, 2)
>>> r
range(0, 20, 2)
>>> 11 in r
False
>>> 10 in r
True
>>> r.index(10)
5
>>> r[5]
10
>>> r[:5]
range(0, 10, 2)
>>> r[-1]
18

==と!を使用rangeオブジェクトが等しいかどうかを検出するには、シーケンスとして比較します.すなわち、2つのrangeオブジェクトが同じ値シーケンスを表す場合、それらは等しいとみなされる.(比較結果が等しい2つのrangeオブジェクトは、range(0)==range(2,1,3)range(0,3,2)==range(0,4,2)などの異なるstart、stop、step属性を持つ可能性があります.)
バージョン3.2で変更:Sequence ABCを実装します.スライスと負数インデックスをサポートします.intオブジェクトを使用して、すべてのアイテムを1つずつ反復するのではなく、一定時間でメンバー検出を行います.
バージョン3.3での変更:'=='と'!='を定義します.オブジェクトのIDではなくrangeオブジェクトによって定義された値シーケンスで比較します.
3.3新しい機能:start、stop、step属性.
ポイント:
Stepが負数の場合、rangeの上位2位は逆になることに注意し、2位は上位にのみrange(10,0,-1)が10-9-8-7-...-3-2-1が0にならず、大きな数字は上位に