1. 学ぶ
  2. /
  3. コース
  4. /
  5. Python ツールボックス

Connected

演習

反復可能オブジェクトを反復処理する(2)

この章で学んだ重要な点のひとつは、すべての反復可能オブジェクトが「実体のある」リストとは限らないことです。例として取り上げたのは、文字列 や range() 関数の利用でした。この演習では range() 関数に注目します。

range() は for ループの中で、まるでリストのように反復して使えます。

for i in range(5):
    print(i)

ただし、range() は実際にリストを作るわけではなく、上限に達するまで値を生成するイテレータ付きの range オブジェクトを作成します(この例では 4 まで)。もし range() が本当にリストを作っていたら、引数に \(10^{100}\) を渡したときにはうまく動かないかもしれません。というのも、そのように巨大な数は一般的なコンピュータのメモリを超えてしまう可能性が高いからです。\(10^{100}\) は実は Googol(グーゴル) と呼ばれ、1 の後に 0 が 100 個続く数です。とても大きな数ですね!

この演習のタスクは、range() に \(10^{100}\) を渡しても、実際のリストが事前に作られないことを示すことです。

指示

100 XP
  • iter() 関数を使って、range(3) に対する イテレータ オブジェクト small_value を作成します。
  • for ループを使って range(3) を反復し、各イテレーションで値を出力します。ループ変数は num を使ってください。
  • range(10 ** 100) に対する イテレータ オブジェクト googol を作成します。