Python の Enumerate()

多くの場合、反復子を扱うときは、反復回数も記録する必要があります。 Python は、このタスク用の組み込み関数 enumerate() を提供することで、プログラマのタスクを軽減します。 enumerate () メソッドは、反復可能オブジェクトにカウンターを追加し、それを列挙オブジェクトの形式で返します。この列挙されたオブジェクトは、ループに直接使用することも、list() 関数を使用してタプルのリストに変換することもできます。

構文: enumerate(反復可能、開始=0)

パラメーター:

  • 反復可能: 反復をサポートする任意のオブジェクト
  • 始める: カウンタを開始するインデックス値。デフォルトでは 0 です。

戻る: 元の反復可能オブジェクトからのインデックスと要素のペアを持つ反復子を返します。

ここでは、リストと文字列の両方で enumerate() 関数を使用しています。それぞれの列挙オブジェクトを作成し、その戻り値の型を表示します。また、文字列に適用した場合に列挙の開始インデックスを変更し、リストと文字列のインデックス要素のペアを作成する方法も示します。

Python3




l1> => [> 'eat'> ,> 'sleep'> ,> 'repeat'> ]> s1> => 'geek'> # creating enumerate objects> obj1> => enumerate> (l1)> obj2> => enumerate> (s1)> print> (> 'Return type:'> ,> type> (obj1))> print> (> list> (> enumerate> (l1)))> # changing start index to 2 from 0> print> (> list> (> enumerate> (s1,> 2> )))>

出力:

Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')] 

ループ内での列挙オブジェクトの使用

Enumerate() は l1 というリストとともに使用されます。まず、インデックスと要素のペアのタプルを出力します。次に、それらを一緒に印刷するときに開始インデックスを変更します。最後に、インデックスと要素を別々の行に個別に出力します。

Python3




l1> => [> 'eat'> ,> 'sleep'> ,> 'repeat'> ]> # printing the tuples in object directly> for> ele> in> enumerate> (l1):> > print> (ele)> # changing index and printing separately> for> count, ele> in> enumerate> (l1,> 100> ):> > print> (count, ele)> # getting desired output from tuple> for> count, ele> in> enumerate> (l1):> > print> (count)> > print> (ele)>

出力:

(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat 

次の要素へのアクセス

Python では、 enumerate() 関数はイテレータとして機能し、関連するすべてのイテレータ関数とメソッドを継承します。したがって、 next() 関数と __next__() メソッドを次のように使用できます。 列挙する 物体。

列挙オブジェクト内の次の要素にアクセスするには、next() 関数を使用できます。列挙オブジェクトを入力として受け取り、反復内の次の値を返します。

Python3




fruits> => [> 'apple'> ,> 'banana'> ,> 'cherry'> ]> enum_fruits> => enumerate> (fruits)> next_element> => next> (enum_fruits)> print> (f> 'Next Element: {next_element}'> )>

出力:

Next Element: (0, 'apple') 

next() を再度呼び出して、後続の要素を取得できます。

Python3




fruits> => [> 'apple'> ,> 'banana'> ,> 'cherry'> ]> enum_fruits> => enumerate> (fruits)> next_element> => next> (enum_fruits)> print> (f> 'Next Element: {next_element}'> )>

出力:

Next Element: (0, 'apple') 

next() が呼び出されるたびに、列挙オブジェクトの内部ポインタが次の要素に移動し、対応するインデックスと値のタプルを返します。