Python でリストを反復処理する
の リスト は他の言語の配列と同等であり、サイズが動的であるという追加の利点があります。
で パイソン 、リストはデータ構造におけるコンテナの一種であり、複数のデータを同時に保存するために使用されます。とは異なり セット , Python のリストは順序付けされており、明確な数を持ちます。この記事では、Python でリストを反復処理する方法と、文字列のリストを Python でループする方法について説明します。
Python のリストの反復処理
Python でリストを反復処理するさまざまな方法と、それらのパフォーマンスの比較をすべて見てみましょう。
- 使用する for ループ
- for ループを使用して、 範囲()
- を使って while ループ
- 使用する リスト内包表記
- 使用する 列挙() 方法
- を使用して、 イター関数 そしてその 次の機能
- を使用して、 マップ()関数
- zip()関数の使用
- 使用する ナムピー モジュール
For ループを使用してリストを反復処理する
単純なメソッドを使用して、Python でリストを反復処理できます。 forループ 。
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using for loop> for> i> in> list> :> > print> (i)> |
出力
1 3 5 7 9
時間計算量: O(n) – ここで、n はリスト内の要素の数です。
補助スペース: O(1) – 追加のスペースを使用していないため。
f を使用してリストを反復処理する またはループと range()
番号 x から番号 y まで繰り返す従来の for ループを使用したい場合。
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # getting length of list> length> => len> (> list> )> > # Iterating the index> # same as 'for i in range(len(list))'> for> i> in> range> (length):> > print> (> list> [i])> |
出力
1 3 5 7 9
時間計算量: O(n)。n は入力リストの長さです。
補助スペース: O(1)、定数空間
Python でリストを反復処理する whileループ
を使用して Python リストを反復処理することもできます。 while ループ 。
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Getting length of list> i> => 0> > # Iterating using while loop> while> i <> len> (> list> ):> > print> (> list> [i])> > i> +> => 1> |
出力
1 3 5 7 9
時間計算量: O(n) ここで、n はリストの長さです。
補助スペース: O(1) は、変数 i と length に一定量の追加スペースのみが使用されるためです。
を使用してリストを反復処理します リスト内包表記
使用できます リスト内包表記 (おそらく最も具体的な方法) Python でリストを反復処理します。
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using list comprehension> [> print> (i)> for> i> in> list> ]> |
出力
1 3 5 7 9
enumerate() を使用して Python でリストを反復処理する
リストをタプルの反復可能なリストに変換する場合 (または、線形検索などの条件チェックに基づいてインデックスを取得する場合は、最小要素のインデックスを保存する必要がある場合があります)、次のように使用できます。 enumerate() 関数 。
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> > # Using enumerate()> for> i, val> in> enumerate> (> list> ):> > print> (i,> ','> ,val)> |
出力
0 , 1 1 , 3 2 , 5 3 , 7 4 , 9
注記: メソッド 2 でもインデックスを見つけるのに使用できますが、メソッド 1 は (反復ごとに追加の変数がインクリメントされない限り) できません。メソッド 5 は、このインデックス付けを簡潔に表現します。
iter 関数と next 関数を使用して Python でリストを反復処理する
ここでは、 iter 関数と next 関数を使用した追加のアプローチを示します。
Python3
# Python3 code to iterate over a list> list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> # Create an iterator object using the iter function> iterator> => iter> (> list> )> # Use the next function to retrieve the elements of the iterator> try> :> > while> True> :> > element> => next> (iterator)> > print> (element)> except> StopIteration:> > pass> |
出力
1 3 5 7 9
時間計算量: の上)
補助スペース: ○(1)
Python で map() 関数を使用してリストを反復処理する
使用 地図() function を使用して、リストの各要素に関数を適用します。
Python3
# Define a function to print each element> def> print_element(element):> > print> (element)> # Create a list> my_list> => [> 1> ,> 3> ,> 5> ,> 7> ,> 9> ]> # Use map() to apply the print_element() function to each element of the list> result> => map> (print_element, my_list)> # Since map() returns an iterator, we need to consume> # the iterator in order to see the output> for> _> in> result:> > pass> |
出力
1 3 5 7 9
時間計算量: O(n)。n はリストの長さです。
補助スペース: ○(1)
Python zip() 関数を使用して複数のリストを反復処理する
この例では、zip() 関数を使用して 2 つのリスト list1 と list2 の要素を同時に反復し、対応する要素をタプルでペアにして後続の印刷に備えています。
Python3
list1> => [> 1> ,> 2> ,> 3> ]> list2> => [> 'p'> ,> 'q'> ,> 'r'> ]> # Using zip() to iterate over multiple lists simultaneously> for> i1, i2> in> zip> (list1, list2):> > print> (f> '{i1} ->{i2}'> )> |
出力
1 ->p 2 -> q 3 -> r>
NumPy を使用して Python でリストを反復処理する
非常に大きな n 次元リスト (画像配列など) の場合は、次のような外部ライブラリを使用した方がよい場合があります。 しこり 。 npが使えます。 enumerate() を使用して列挙の動作を模倣します。 NumPy の特別な能力は、要素へのアクセス方法 (C の順序ではなく Fortran の順序、たとえば :)) を制御できるという事実から来ていますが、1 つの注意点は、np.nditer が配列を読み取り専用として扱うことです。デフォルトなので、要素を変更できるようにするには、op_flags=['readwrite'] などの追加のフラグを渡す必要があります。
Python3
import> numpy as geek> # creating an array using> # arrange method> a> => geek.arange(> 9> )> # shape array with 3 rows> # and 4 columns> a> => a.reshape(> 3> ,> 3> )> # iterating an array> for> x> in> geek.nditer(a):> > print> (x)> |
出力:
0 1 2 3 4 5 6 7 8
時間計算量: の上)
補助スペース: ○(1)