Pythonで繰り返し処理ができるfor文ですが、カウンタを最初から最後まで順番に、ではなく条件を指定して出力したい場合があります。
- 先頭ではなく2番目から始めたい
- 偶数のときだけ処理したい
- 指定した順番で修了したい
など、条件を指定して、増加量や順番を変えるにはどのようにしたら良いのでしょう。
この記事では、Pythonでfor文を使った繰り返し処理で、出力するカウンタの増え方を指定する方法を紹介します。
|
Pythonのfor文で順番に出力:range
Pythonのfor文で指定した数字を順番に出力するには次のように書きます。
for 変数 in 要素が入ったオブジェクト:
処理
「要素が入ったオブジェクト」から1つずつ要素を取り出して、変数に代入、処理を行う、という流れ。
では実際に、「要素が入ったオブジェクト」を指定して、for文で要素を出力したいと思います。
配列の要素を順番に出力する
「要素が入ったオブジェクト」として配列を使います。
配列に追加された要素を、順番に出力するには次のように書きます。
numbers_to_output = [1, 2, 3, 4, 5, 6]
for number in numbers_to_output:
print(number)
数字が追加された配列 numbers_to_output = [1, 2, 3, 4, 5, 6] をオブジェクトに設定、順番に出力します。
実行:
1
2
3
4
5
6
配列の要素 1, 2, 3, 4, 5, 6 が順番に出力されました。
今度は、配列の要素を数字から文字列に変えて実行してみます。
string_to_output = ["McLaren", "Alpha Tauri", "Alfa Romeo", "Red Bull", "Mercedes", "Alpine"]
for string in string_to_output:
print(string)
文字列が追加された配列 string_to_output = [“McLaren”, “Alpha Tauri”, “Alfa Romeo”, “Red Bull”, “Mercedes”, “Alpine”] をオブジェクトに設定、順番に出力します。
実行:
McLaren
Alpha Tauri
Alfa Romeo
Red Bull
Mercedes
Alpine
こちらも同じく、配列に追加された文字列の要素が、順番に出力されました。
|
rangeで繰り返す回数を指定する
for 変数 in 配列: で配列に追加されている要素を順番に出力できる事は分かりました。
しかし、Pythonでプログラミングを書く場合は、単純に回数分の繰り返しをしたい場合があります。
10回繰り返したい。100回繰り返したい。1000回 2000回 ….
その場合は配列ではなく range関数を使用すると便利です。
例えば、for文で10回繰り返したい場合は、次のように書きます
for number in range(10):
print(number)
range(10)で10回分の指定をします
実行:
0
1
2
3
4
5
6
7
8
9
0から9まで10回分の数字が順番に出力されました。
range(10)と記述すると、0から9まで順番に変数numberに代入され、処理が実行される事が分かりました。
ちなみに配列に追加されている要素の数でrange関数を使用する事も可能です。
string_to_output = ["McLaren", "Alpha Tauri", "Alfa Romeo", "Red Bull", "Mercedes", "Alpine"]
for number in range(len(string_to_output)):
print(number)
len(string_to_output)で、配列の長さ(要素の個数)を取り出し、range関数に指定しました。
実行:
0
1
2
3
4
5
配列の要素分の数が順番に出力されました。
rangeで始まりを指定する
rangeに指定した回数だけ順番に出力出来る事が分かりました。
しかし、先頭からではなく、2番目、4番目から始めたい場合もあります。
rangeはオプションで、始まりの順番を指定する事が可能です。
for number in range(3,10):
print(number)
実行:
3
4
5
6
7
8
9
range(3,10)と書くと、3から10回目までの数字が順番に出力されました。
Pythonのfor文で1つ飛ばしで出力:range
for分とrange関数を使って、数字を順番に出力する方法は分かりました。
では出力する順番を、1つ飛ばし、3つ飛ばし、にする場合はどのようにしたら良いのでしょう。
range関数のオプションで幾つずつ増やすかを設定する事ができます。
range(始まり, 回数, 増加量)
for number in range(0,10,2):
print(number)
range(0,10,2)で0から10回目まで2ずつ増加します
実行:
0
2
4
6
8
0から10回目までの、2ずつ増加する数字が出力されました。
今度は range(0,10,4) として増加量を4に変更して実行してみます。
for number in range(0,10,4):
print(number)
実行:
0
4
8
0から10回目までの、4ずつ増加する数字が出力されました。
Pythonのfor文で奇数偶数を判別
今度は順番に出力される数字の奇数偶数を判別して、奇数のときだけ、偶数のときだけ、処理される様にします。
■偶数のみ出力
偶数は2で割り切れる数字なので 「数字 % 2 == 0」 で判別できます。
for number in range(10):
if number % 2 == 0:
print(number)
0から10回目までの、2で割り切れる数字を出力します。
実行:
0
2
4
6
8
2で割り切れる数字のみ出力されましたが、0が余計です。なので先頭からでなく、1から9までの数字に変更します。
for number in range(1,10):
if number % 2 == 0:
print(number)
range(1,10)として1から10回目までの、2で割り切れる数字を出力します。
実行:
2
4
6
8
0を外した、2で割り切れる数字のみ出力されました。
■奇数のみ出力
次は、奇数のみ出力します。
偶数は if number % 2 == 0: で判別できるわけなので、奇数は2で割り切れない if number % 2 != 0: とすれば判別できます。
for number in range(1,10):
if number % 2 != 0:
print(number)
実行:
1
3
5
7
9
1から10回目までの数字で奇数のみ出力されました。
|
自宅からでもWeb制作・プログラミング・アプリ開発などが習得できるさまざまなコースをラインナップ。
非エンジニアでスキルを磨きたい方から、フリーランス、就職/転職を目指す方まで、専属のメンターがサポート。
最近は副業ブームもあり「 はじめての副業コース 」が人気です。
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|