Pythonのループテクニック完全ガイド|enumerate・zip・rangeの使い方を解説
このチュートリアルでは、Python 3.x(およびそれ以前のバージョン)で利用できるさまざまなループ処理のテクニックについて解説します。Pythonにはループを実装する方法が数多くありますが、本記事では実務で特に役立つ5つのテクニックを、サンプルコードと実行結果とともにわかりやすく紹介します。
1. enumerate():インデックス付きの列挙ループ
リストなどのイテラブルを処理する際、要素と同時にインデックス番号も取得したい場合は、enumerate()関数が便利です。カウンタ変数を手動で管理する必要がなく、コードがすっきりと読みやすくなります。
サンプルコード
# enumerate() を使った例
for index, value in enumerate(['Tutorial', 'point']):
print(index, value)
実行結果
0 Tutorial 1 point
2. zip():複数のシーケンスを同時にループ
複数のリストやタプルを並行して処理したい場合には、zip()関数を使用します。各シーケンスから対応する要素をペアとして取り出し、一度のループでまとめて扱うことができます。
サンプルコード
# zip() メソッドを使った例
arr1 = ['Tutorial', 'point']
arr2 = ['python', 'loops']
for i, j in zip(arr1, arr2):
print(i, j)
実行結果
Tutorial python point loops
3. メンバーシップ構文:リストを直接ループ
Pythonでは、リストの要素を直接取り出しながらループできます。C言語のようなインデックス操作が不要なため、非常に読みやすいコードになります。これは最も基本的で、日常的にもっともよく使われるループの書き方です。
サンプルコード
# メンバーシップ演算子を使った例
for i in ['Tutorial', 'point']:
print(i)
実行結果
Tutorial point
4. 無限ループ構文
while(True):と記述すると、条件が常に真となるため無限に繰り返すループを作成できます。サーバーの常駐処理やイベントループなどで活用されますが、終了条件(breakなど)を適切に設計しないとプログラムが停止しなくなるため注意が必要です。
サンプルコード
# 無限ループ
while(True):
pass
5. range()のステップ指定:間隔をあけたループ
range()関数は第3引数にステップ値を指定でき、一定間隔ごとに値をスキップしながらループできます。以下の例では、0から4未満までの範囲を2ずつ増加させて処理しています。
サンプルコード
# ステップ付きの range() を使った例
for i in range(0, 4, 2):
print(i)
実行結果
0 2
まとめ
本記事では、Python 3.x(およびそれ以前のバージョン)で使える代表的なループテクニックとして、enumerate()によるインデックス付きループ、zip()による複数シーケンスの同時処理、メンバーシップ構文、無限ループ、ステップ付きrange()の5つを紹介しました。用途に応じて適切なテクニックを選択することで、より簡潔で効率的なPythonコードを書けるようになります。
-
Pythonで点が長方形の内部にあるかどうかを判定する方法
長方形は、左下の頂点(bottom-left)と右上の頂点(top-right)という2つの座標点で表すことができます。本記事では、与えられた点 (x, y) がその長方形の内部に存在するかどうかをPythonで判定する方法を解説します。例えば、左下の頂点が (1, 1)、右上の頂点が (8, 5) である長方形に対して、点 (5, 4) が含まれるかどうかを調べると、出力は True になります。解決のための手順solve() 関数を定義します。引数として bl(左下の頂点)、tr(右上の頂点)、p(判定対象の点)を受け取ります。点 p の x 座標が bl の x 座標より大きく、かつ t
-
Pythonで点がポリゴンの内側または境界上にあるかどうかを判定するプログラム
問題の概要 直交座標系の点のリスト [(x1, y1), (x2, y2), ..., (xn, yn)] が1つのポリゴン(多角形)を表しているとします。ここに、判定対象となる点 (x, y) が与えられたとき、その点がこのポリゴンの内側、あるいは境界上に存在するかどうかを判定するのが本記事のテーマです。 例として、次のような入力を考えてみましょう。 points = [(0, 0), (1, 3), (4, 4), (6, 2), (4, 0)] pt = (3, 1) この場合、点 (3, 1) はポリゴンの内部にあるため、出力は True となります。 解決のアプローチ この問題は