range
不変の反復可能なオブジェクトのクラスです。それらの反復動作はsと比較できます。それらを直接list
呼び出すことはできません。next
を使用してイテレータを取得する必要がありますiter
。
いいえ、range
ジェネレータではありません。
「なぜ彼らはそれを直接反復可能にしなかったのか」とあなたは考えているかもしれませんか?そうですね、range
sには、その方法では不可能ないくつかの便利なプロパティがあります。
- それらは不変であるため、辞書のキーとして使用できます。
- それらには
start
、、属性(Python 3.3以降)、stop
およびメソッドがあり、、、および操作をサポートします。step
count
index
in
len
__getitem__
range
同じことを複数回繰り返すことができます。
>>> myrange = range(1, 21, 2)
>>> myrange.start
1
>>> myrange.step
2
>>> myrange.index(17)
8
>>> myrange.index(18)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 18 is not in range
>>> it = iter(myrange)
>>> it
<range_iterator object at 0x7f504a9be960>
>>> next(it)
1
>>> next(it)
3
>>> next(it)
5