📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 Wiki がページ「反復処理(Python)」を「反復処理 - for文(Python)」に、リダイレクトを残さずに移動しました |
細 文字列「</source>」を「</syntaxhighlight>」に置換 |
||
| (同じ利用者による、間の4版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
ここでは、Pythonにおいて、条件が成立する時に反復処理(イテレーション) | ここでは、Pythonにおいて、条件が成立する時に反復処理(イテレーション)をするfor文を記載する。<br> | ||
また、range関数とzip関数を使用した処理も併せて記載する。<br> | |||
<br> | |||
反復処理が可能(イテラブル)なオブジェクト(文字列、リスト、タプル、辞書等)を使用して反復処理を行うにはfor文を使用する。<br> | 反復処理が可能(イテラブル)なオブジェクト(文字列、リスト、タプル、辞書等)を使用して反復処理を行うにはfor文を使用する。<br> | ||
<br><br> | <br><br> | ||
| 7行目: | 9行目: | ||
Pythonでfor文を使ってループ処理のコードを書くには、forの後ろに繰り返し変数を記述する。<br> | Pythonでfor文を使ってループ処理のコードを書くには、forの後ろに繰り返し変数を記述する。<br> | ||
続けて、inキーワードを記述した後にリストなどのシーケンスを記述して、末尾にコロンを置く。<br> | 続けて、inキーワードを記述した後にリストなどのシーケンスを記述して、末尾にコロンを置く。<br> | ||
< | <syntaxhighlight lang="python"> | ||
for 繰り返し変数 in シーケンス: | for 繰り返し変数 in シーケンス: | ||
実行コード | 実行コード | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
以下の例では、リスト変数から各要素を取得している。<br> | 以下の例では、リスト変数から各要素を取得している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
lang = ["Python","PHP","Swift"] | lang = ["Python","PHP","Swift"] | ||
| 23行目: | 25行目: | ||
PHP | PHP | ||
Swift | Swift | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
次に、文字列をシーケンスとして使用する。<br> | 次に、文字列をシーケンスとして使用する。<br> | ||
以下の例では、Pythonという文字列を、繰り返し変数をsとして、1文字ずつ取得している。<br> | 以下の例では、Pythonという文字列を、繰り返し変数をsとして、1文字ずつ取得している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
for s in "Python": | for s in "Python": | ||
print(s) | print(s) | ||
| 38行目: | 40行目: | ||
o | o | ||
n | n | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 44行目: | 46行目: | ||
for文でも、while文と同様にbreak文を使用して反復処理を抜けることができる。<br> | for文でも、while文と同様にbreak文を使用して反復処理を抜けることができる。<br> | ||
以下の例では、取得した文字がhの時にfor文から抜ける処理をしている。<br> | 以下の例では、取得した文字がhの時にfor文から抜ける処理をしている。<br> | ||
< | <syntaxhighlight lang="python"> | ||
for s in "Python": | for s in "Python": | ||
if s == "h": | if s == "h": | ||
| 54行目: | 56行目: | ||
y | y | ||
t | t | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 60行目: | 62行目: | ||
continue文を使用して、処理をスキップして再度反復処理の先頭に戻ることができる。<br> | continue文を使用して、処理をスキップして再度反復処理の先頭に戻ることができる。<br> | ||
以下の例では、指定した文字hの場合のみ処理がスキップしている。<br> | 以下の例では、指定した文字hの場合のみ処理がスキップしている。<br> | ||
< | <syntaxhighlight lang="python"> | ||
for s in "Python": | for s in "Python": | ||
if s == "h": | if s == "h": | ||
| 72行目: | 74行目: | ||
o | o | ||
n | n | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 78行目: | 80行目: | ||
for文もwhile文と同様に、処理が終わったら何か別の処理をする場合にelse文と組み合わせることができる。<br> | for文もwhile文と同様に、処理が終わったら何か別の処理をする場合にelse文と組み合わせることができる。<br> | ||
以下の例のように、else文を最後に付け加えるだけである。<br> | 以下の例のように、else文を最後に付け加えるだけである。<br> | ||
< | <syntaxhighlight lang="python"> | ||
lang = ["Python","PHP","Swift"] | lang = ["Python","PHP","Swift"] | ||
| 91行目: | 93行目: | ||
Swift | Swift | ||
Done! | Done! | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
また、以下の例では、break文と組み合わせている。<br> | また、以下の例では、break文と組み合わせている。<br> | ||
break文で反復処理を抜けると、else文の処理は実行されない。<br> | break文で反復処理を抜けると、else文の処理は実行されない。<br> | ||
このような処理は、break文が実行されなかった場合は、else文でチェックするような時に使用する。<br> | このような処理は、break文が実行されなかった場合は、else文でチェックするような時に使用する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
lang = ["Python","PHP","Swift"] | lang = ["Python","PHP","Swift"] | ||
| 108行目: | 110行目: | ||
# 出力 | # 出力 | ||
Python | Python | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 115行目: | 117行目: | ||
次のような辞書型変数を用意して、for文で処理する。<br> | 次のような辞書型変数を用意して、for文で処理する。<br> | ||
print関数で出力されているものは、辞書のキーの部分である。このように、辞書型変数をfor文で処理するとキーが処理される。<br> | print関数で出力されているものは、辞書のキーの部分である。このように、辞書型変数をfor文で処理するとキーが処理される。<br> | ||
< | <syntaxhighlight lang="python"> | ||
foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | ||
| 125行目: | 127行目: | ||
lunch | lunch | ||
dinner | dinner | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
上記のサンプルコードは、次のように辞書型変数のkeys関数を使用した処理と同じである。<br> | 上記のサンプルコードは、次のように辞書型変数のkeys関数を使用した処理と同じである。<br> | ||
for文で辞書をそのまま使用してもkeys関数を使用しても、結果はどちらもキーが取得されることになる。<br> | for文で辞書をそのまま使用してもkeys関数を使用しても、結果はどちらもキーが取得されることになる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | ||
| 139行目: | 141行目: | ||
lunch | lunch | ||
dinner | dinner | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== for文と辞書のvalues関数 ===== | ===== for文と辞書のvalues関数 ===== | ||
辞書の値を反復処理で取得する場合は、values関数を使用する。<br> | 辞書の値を反復処理で取得する場合は、values関数を使用する。<br> | ||
以下の例では、values関数を使用して辞書の値を取得している。<br> | 以下の例では、values関数を使用して辞書の値を取得している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | ||
| 154行目: | 156行目: | ||
sandwich | sandwich | ||
steak | steak | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== for文と辞書のitems関数 ===== | ===== for文と辞書のitems関数 ===== | ||
辞書のキーと値をセットでタプル型に変換して反復処理する場合は、items()関数を使用する。<br> | 辞書のキーと値をセットでタプル型に変換して反復処理する場合は、items()関数を使用する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | ||
| 168行目: | 170行目: | ||
('lunch', 'sandwich') | ('lunch', 'sandwich') | ||
('dinner', 'steak') | ('dinner', 'steak') | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
また、以下の例では、このタプルをそれぞれの変数にキーと値を代入する処理を行っている。<br> | また、以下の例では、このタプルをそれぞれの変数にキーと値を代入する処理を行っている。<br> | ||
ピリオドと改行コードを文末に出力するために、print関数のendオプションを使用している。<br> | ピリオドと改行コードを文末に出力するために、print関数のendオプションを使用している。<br> | ||
それぞれキーと値が対応した位置に出力されている。<br> | それぞれキーと値が対応した位置に出力されている。<br> | ||
< | <syntaxhighlight lang="python"> | ||
foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} | ||
| 183行目: | 185行目: | ||
Yesterday, I had sandwich for lunch. | Yesterday, I had sandwich for lunch. | ||
Yesterday, I had steak for dinner. | Yesterday, I had steak for dinner. | ||
</ | </syntaxhighlight> | ||
<br><br> | |||
== range関数で反復処理(数値のシーケンス生成) == | |||
for文において、range関数が使用されることがよくある。<br> | |||
range関数は、指定した範囲の数値の順に取得するので、イテラブルなオブジェクトを返すことができる。<br> | |||
<br> | |||
range関数の使用方法は、range(start値, end値, step値)という形でそれぞれの値に数値を指定する。(スライスと同様の使用方法)<br> | |||
<syntaxhighlight lang="python"> | |||
for i in range(5): | |||
print(i) | |||
# 出力 | |||
0 | |||
1 | |||
2 | |||
3 | |||
4 | |||
</syntaxhighlight> | |||
<br> | |||
次に、range関数のstart値、end値、step値を指定する。<br> | |||
<syntaxhighlight lang="python"> | |||
for i in range(1, 10, 3): | |||
print(i) | |||
# 出力 | |||
1 | |||
4 | |||
7 | |||
</syntaxhighlight> | |||
<br> | |||
range関数は、list関数を使用してリストに変換することができる。<br> | |||
<syntaxhighlight lang="python"> | |||
a = list(range(1, 10, 3)) | |||
print(a) | |||
# 出力 | |||
[1, 4, 7] | |||
</syntaxhighlight> | |||
<br><br> | |||
== zip関数で反復処理(複数のシーケンスの反復処理) == | |||
zip関数を使用すると、複数のシーケンスを並列に反復処理することができる。<br> | |||
<br> | |||
以下の例では、複数のリストをzip関数でまとめて、それぞれの位置に対応した変数を出力している。<br> | |||
各リストの共通するインデックスの値が抜き出されて反復処理されている。<br> | |||
3つのリストがここでは全て同じ要素数でしたが、要素数がそれぞれ異なる場合は、一番小さい要素数に合わせたオフセットで反復処理がなされます。 | |||
<syntaxhighlight lang="python"> | |||
lang = ["Python", "PHP", "Swift"] | |||
prefix = ["P", "P", "S"] | |||
suffix = ["n", "P", "t"] | |||
for item1, item2, item3 in zip(lang, prefix, suffix): | |||
print(item1, item2, item3) | |||
# 出力 | |||
Python P n | |||
PHP P P | |||
Swift S t | |||
</syntaxhighlight> | |||
<br> | |||
上記のサンプルコードをrange関数を使用して記述すると、以下のようになる。<br> | |||
実行すると同様の結果が出力される。<br> | |||
<syntaxhighlight lang="python"> | |||
lang = ["Python", "PHP", "Swift"] | |||
prefix = ["P", "P", "S"] | |||
suffix = ["n", "P", "t"] | |||
for i in range(len(lang)): | |||
print(lang[i], prefix[i], suffix[i]) | |||
# 出力 | |||
Python P n | |||
PHP P P | |||
Swift S t | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Python]] | [[カテゴリ:Python]] | ||