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でレンチン