イテラブルの反復(2)
この章で学んだ重要なポイントの1つは、すべてのイテラブルが実際のリストであるわけではないということです。その例として、文字列と range() 関数を取り上げました。この演習では、range() 関数に注目します。
range() は、for ループの中でリストと同じように使えます。
for i in range(5):
print(i)
range() は実際のリストを作成するわけではありません。代わりに、指定した上限に達するまで値を順番に生成するイテレータを持つ range オブジェクトを作成します(上の例では、値が 4 になるまで生成します)。もし range() が実際のリストを作成するとしたら、\(10^{100}\) のような巨大な値を渡した場合、通常のコンピュータのメモリを超えてしまい、動作しないかもしれません。\(10^{100}\) は グーゴル と呼ばれる数で、1 の後に 0 が 100 個続く、非常に大きな数です。
この演習では、range() に \(10^{100}\) を渡しても、実際にはリストが事前に作成されないことを確認しましょう。
この演習はコースの一部です
Python Toolbox
演習の手順
small_value関数を使って、range(3)に対するイテレータオブジェクトiter()を作成します。forループを使ってrange(3)をイテレートし、各イテレーションの値を表示します。ループ変数にはnumを使います。googolに対するイテレータオブジェクトrange(10 ** 100)を作成します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create an iterator for range(3): small_value
small_value = ____
# Print the values in small_value
print(next(small_value))
print(next(small_value))
print(next(small_value))
# Loop over range(3) and print the values
# Create an iterator for range(10 ** 100): googol
googol = ____
# Print the first 5 values from googol
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))