Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Pythonのイテラブル:シーケンスとデータ構造の理解 | Pythonにおけるイテレータとジェネレータの習得
Python構造化プログラミング
セクション 6.  1
single

single

bookPythonのイテラブル:シーケンスとデータ構造の理解

メニューを表示するにはスワイプしてください

イテラブルとは何か

Pythonにおいて、イテラブルオブジェクトであり、その要素を一つずつ順番にたどったりループ処理したりすることができます。この一度に一つの要素を生成する特性は、ループ処理内包表記アンパッキングなどのタスクで非常に重要です。

一般的なイテラブルの例:

  • データ構造: lists, tuples, dictionaries, sets;
  • 文字列: 1文字ずつ要素を生成;
  • カスタムオブジェクト: __iter__ メソッドを実装することでイテラブル化。

イテラブルの主な特徴は、走査中に位置情報を保持しないことです。要素を実際に走査するには、イテレータが必要です。

1234567
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
copy

for ループはイテラブルの要素を自動的に走査し、1つずつ処理します。

Pythonがイテラブルを処理する際、iter() 関数を使ってオブジェクトをイテレータに変換します。内部的には、iter() がオブジェクトの __iter__() メソッドを呼び出します。同様に、next() 関数はイテレータの __next__() メソッドを呼び出して次の値を取得します。

以下はこの仕組みを示す例です:

12345678910
numbers = [1, 2, 3, 4] # Converting the list to an iterator numbers_iterator = iter(numbers) # Accessing elements one at a time using `next()` print(next(numbers_iterator)) # Output: 1 print(next(numbers_iterator)) # Output: 2 print(next(numbers_iterator)) # Output: 3 print(next(numbers_iterator)) # Output: 4 print(next(numbers_iterator)) # Output: StopIteration
copy

イテラブルとイテレータの違い

すべてのイテレータはイテラブルですが、すべてのイテラブルがイテレータであるとは限りません。 イテレータは走査中の位置を記憶し、末尾に到達するまで順番に要素へアクセスを提供します。

イテラブルの制限

大規模なデータセットを扱う場合、リストのようなイテラブルにすべての要素を格納するのは非効率的です。たとえば、数値のシーケンスが動的に生成される場合や、メモリに収まりきらないほど大きい場合、要素を必要に応じて処理する方法が必要です。このような場面でイテレータ(次章で解説)や遅延評価(後述)が重要になります。

タスク

スワイプしてコーディングを開始

イテレータを使用してシャッフルされた6面サイコロを振るシミュレーションを行うPythonスクリプトを作成してください。コードの不足部分を完成させ、イテレータの作成、next()による要素の取得、イテレーション終了時の適切な処理を実装します。

  1. リスト [1, 2, 3, 4, 5, 6] はサイコロの面を表します。このリストはすでに random.shuffle() でシャッフルされています。
  2. シャッフル済みリストをイテレータに変換し、要素を1つずつ順にたどれるようにします。
  3. next() 関数を使ってサイコロを振る動作をシミュレートし、すべての面が出るまで各面を出力します。
  4. イテレータが尽きた場合は StopIteration 例外を処理し、すべてのロールが完了したことを示します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 6.  1
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt