この記事では、Pythonでリストを反復処理する方法について説明します。
Pythonのリストは基本的に「順序付きデータ構造」であり、その中にデータを保存して操作することができます。
Pythonでリストを反復処理するには、以下の方法のいずれかを参照することができます。
- Pythonのrange()メソッドを使用する
- リストの理解
- Pythonのenumerate()メソッドを使用します。
- for ループの使用
- while ループの使用
- Python NumPy モジュールの使用
- ラムダ関数の利用
1. Python で range() メソッドを使ってリストを反復処理する
Python の range()
メソッドは for ループと組み合わせて、Python のリストを走査して反復処理するために使用することができます。
range() メソッドは基本的に sequence of integers
を返します。
つまり、引数リストで指定された開始インデックスから終了インデックスまでの一連の整数を構築/生成するのです。
構文は以下の様な感じです。
range (start, stop[, step])
|
- start` (上限): このパラメータは、生成される一連の整数の開始値/終了インデックスを指定するために使用される。
- stop
(下限): stop
(lower limit): このパラメータは、生成される一連の整数の終了値/インデックスを指定するために使用される。 -
step
(オプション): 生成されるシーケンスから、各整数値の差を指定します。
range() 関数は,開始値から終了値/停止値までの一連の整数を生成しますが,終了値はシーケンスに含めません.
例えば、以下の様になります。
lst = [ 10 , 50 , 75 , 83 , 98 , 84 , 32 ]
for x in range ( len (lst)):
print (lst[x])
|
上記のコードでは、リストは range() 関数を使って反復され、0(ゼロ)からリストの長さまで走査されます。
結果は、以下の通りになります。
10 50 75 83 98 84 32 |
2. Pythonでforループを使ってリストを繰り返し処理する
Pythonのforループは、リストを直接反復処理するために使用することができます。
構文は以下の通りです。
for var_name in input_list_name:
|
例えば、以下の様になります。
lst = [ 10 , 50 , 75 , 83 , 98 , 84 , 32 ]
for x in lst:
print (x)
|
結果は以下の通りです。
10 50 75 83 98 84 32 |
この記事もチェック:Pythonのリストをjoinやmap、forループを使って文字列に変換する方法
3. Pythonでリストを反復処理するリスト内包機能
Pythonのリスト内包は、特定のプロパティや仕様を持つ要素のリストを生成する無関心な方法です。
つまり、入力がリスト、文字列、タプルなどであるかを識別することができます。
構文は以下の様な感じです。
[expression / statement for item in input_list]
|
例えば、以下の様になります。
lst = [ 10 , 50 , 75 , 83 , 98 , 84 , 32 ]
[ print (x) for x in lst]
|
結果は、以下の通りになります。
10 50 75 83 98 84 32 |
4. Pythonでwhileループを使ってリストを反復処理する
Pythonのwhileループもforループと同じような方法でリストを繰り返し処理することができます。
構文は以下の通りです。
while (condition) :
Statement
update_expression
|
例えば、以下の様になります。
lst = [ 10 , 50 , 75 , 83 , 98 , 84 , 32 ]
x = 0
# Iterating using while loop while x < len (lst):
print (lst[x])
x = x + 1
|
結果は以下の通りです。
10 50 75 83 98 84 32 |
5. Python NumPyでリストを繰り返し処理する
Python NumPyの配列は、リストを効率的に反復処理するために使うこともできます。
Python numpy.ange()関数は、整数の一様な並びを作成します。
numpy.arange()関数のシンタックスです。
numpy.arange(start, stop, step) |
- start`: このパラメータは、生成される整数の列の開始値/インデックスを指定するために使用されます。
-
stop
: このパラメータは、生成される一連の整数の終了値/インデックスを指定するために使用されます。 -
step
: このパラメータは、生成される一連の整数の終了値/インデックスを指定します。生成されるシーケンスから各整数の差分を提供します。
numpy.nditer(numpy_array)` は、NumPyの配列を走査するためのイテレータを提供する関数です。
例えば、以下の様になります。
import numpy as np
n = np.arange( 16 )
for x in np.nditer(n):
print (x)
|
上記のコードでは、np.arange(16)は0から15までの整数の列を作成します。
出力は以下の通りです。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
この記事もチェック:pythonの配列(リスト)の中で最も多い数を見つける方法を解説(コード付き)
6. Python enumerate()メソッドによるPythonリストの繰り返し処理
Pythonのenumerate()関数は、最適化された方法でリストを反復処理するために使用することができます。
enumerate()` 関数はリストや他の反復処理可能なものにカウンタを追加し、関数によって enumerate オブジェクトとして返します。
したがって、反復処理の間、要素のカウントを維持するためのオーバーヘッドを削減することができます。
構文は以下の様な感じです。
enumerate (iterable, start_index)
|
- start_index`: 反復処理中のイテレートにおいて、カウンタを記録する要素のインデックスを指定します。
例えば、以下の様になります。
lst = [ 10 , 50 , 75 , 83 , 98 , 84 , 32 ]
for x, res in enumerate (lst):
print (x, ":" ,res)
|
結果を出力すると、以下の様になります。
0 : 10
1 : 50
2 : 75
3 : 83
4 : 98
5 : 84
6 : 32
|
この記事もチェック:Pythonのsample関数を使ってリストからランダムに要素を抽出する方法
7. Pythonのリストをラムダ関数で反復処理する
Pythonのラムダ関数は、基本的に無名関数です。
構文は以下の通りです。
lambda parameters: expression
|
- 式`: 評価されるイテラブル。
ラムダ関数はPythonのmap()関数と一緒に使うと、リストを簡単に反復処理することができます。
Pythonの map()
メソッドは、パラメータとして関数を受け取り、リストを返します。
map()メソッドへの入力関数はイテラブルの各要素で呼び出され、関数から返されたすべての要素を持つ新しいリストをそれぞれ返します。
例えば、以下の様になります。
lst = [ 10 , 50 , 75 , 83 , 98 , 84 , 32 ]
res = list ( map ( lambda x:x, lst))
print (res)
|
上記のコードでは、ラムダ x:x 関数が map() 関数への入力として提供されています。
ラムダ x:x はイテラブルの各要素を受け取り、それを返します。
input_list(lst)はmap()関数の第2引数として提供される。
つまり、map()関数はlstの各要素をlambda x:x関数に渡し、その要素を返す。
出力されます。
[ 10 , 50 , 75 , 83 , 98 , 84 , 32 ]
|
まとめ
今回は、PythonのListを反復処理するための様々なテクニックを紹介しました。