ユーニックス総合研究所

  • home
  • archives
  • python-for-range-hani

Pythonのfor文のrangeで範囲ループする方法

  • 作成日: 2022-03-18
  • 更新日: 2023-12-25
  • カテゴリ: Python

Pythonのfor文のrangeで範囲ループする方法

Pythonでfor文を書くとき、rangeを使うと一定の範囲をループ処理することができます。
たとえば「0から10の範囲」とか「10から20の範囲」とか、「0から-10の範囲」と言った具合です。

Pythonでfor文とrangeを扱えるようになると、いろいろなプログラムに応用が効きます。
この記事では具体的にこの方法について解説していきます。

関連記事

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
形態素解析で代名詞+助詞+名詞を文章から抜き出す【Python, 自然言語処理, Janome】
在宅・未経験、Pythonで稼ぐ方法は?【取引・宣伝・広告】

0から10の範囲をループする

0から10の範囲をループする」場合は↓のようにコードを書きます。

for i in range(10):  
    print(i)  

↑のコードを実行すると↓の結果になります。

0  
1  
2  
3  
4  
5  
6  
7  
8  
9  

このfor文は正確には「0から10より下までループする」ということになります。
つまり「10」は含まれません。
「10」を含めたい場合はrange(11)にします。

range()に整数を1つ渡すと、for文は0からその整数の範囲でループします。
range()には複数の値を渡すことができますが、for文を「0」から回したい場合は1つで足りる場合が多いです。

10から20の範囲をループする

10から20の範囲をループする」場合は↓のようにコードを書きます。

for i in range(10, 20):  
    print(i)  

このコード↑を実行すると↓の結果になります。

10  
11  
12  
13  
14  
15  
16  
17  
18  
19  

この場合も正確には「10から20より下までループする」という意味になります。
つまり「20」は含まれません。
「20」を含めたい場合はrange(10, 21)とします。

range()の第1引数に範囲の始点、そして第2引数に範囲の終点を指定します。
始点から終点の範囲でfor文はループをします。

0から-10の範囲をループする

0から-10の範囲でループする」場合は↓のようにコードを書きます。

for i in range(0, -10, -1):  
    print(i)  

このコード↑を実行すると↓の結果になります。

0  
-1  
-2  
-3  
-4  
-5  
-6  
-7  
-8  
-9  

これも正確には「0から-10より上までループする」ということになります。
「-10」は含まれないので、「-10」を含めたい場合はrange(0, -11, -1)にします。

range()の第3引数は「-1」になってます。
range()の第3引数には「ステップ数」を指定します。
これはつまりループごとの増加量です。
ステップ数を「-1」にした場合は、1ループごとに「-1増加」します。
「-1増加」というのは「1減る」ということです。
つまり始点(第1引数)が0だった場合はそこから「-1」「-2」「-3」...と言う風に減っていきます。

ステップ数で増加量を変更する

range()第3引数のステップ数を変えると、ループごとの増加量を変更できます。
これを使うと例えば「0から10の範囲で2ずつ増加するループ」というfor文を書くことも出来ます。
この場合は↓のようにコードを書きます。

for i in range(0, 10, 2):  
    print(i)  

↑のコードを実行すると↓の結果になります。

0  
2  
4  
6  
8  

range(0, 10, 2)を日本語にすると「0から10より下の範囲で2ずつ増加」になります。

🦝 < 日本語にするとわかりやすいね

🐭 < そやね

リストの長さの範囲でループする

range()を使ってリストの長さの範囲でループしたい場合は↓のようなコードになります。

lis = [1, 2, 3]  

for i in range(len(lis)):  
    print(i, lis[i])  
0 1  
1 2  
2 3  

要素だけ取り出したい場合は↓のようにrange()を使わなくても書けます。

lis = [1, 2, 3]  

for el in lis:  
    print(el)  
1  
2  
3  

range()を使ってリストを逆順で回したい場合は↓のようにコードを書きます。

lis = [1, 2, 3]  

for i in range(len(lis) - 1, -1, -1):  
    print(i, lis[i])  
2 3  
1 2  
0 1  

range()を使わない場合は↓のように書けます。

lis = [1, 2, 3]  

for el in lis[::-1]:  
    print(el)  
3  
2  
1  

また添え字と要素を同時に取り出したい場合はenumerate()も使えます。

lis = [1, 2, 3]  

for i, el in enumerate(lis):  
    print(i, el)  
0 1  
1 2  
2 3  

while文で範囲ループする

Pythonにはwhile文もあります。
while文を使った範囲ループは↓のように書きます。

i = 10  
while i < 20:  
    print(i)  
    i += 1  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  

for文で大抵の用は足りますが、自由度から言うとwhile文の方が高いので覚えておいて損は無いかと思います。

おわりに

今回はPythonのfor文とrangeで範囲ループする方法を解説しました。
rangeを使ったループはPythonの特徴とも言っていい機能です。
最初はクセがありますが慣れてしまうのが吉と言えます。

🦝 < 範囲ループしよう

🐭 < rangeでレンチン