始める無料で始める

イテラブルの反復(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))
コードを編集して実行