MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Pythonの基礎 - 反復処理(for文)のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Pythonの基礎 - 反復処理(for文)
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == ここでは、Pythonにおいて、条件が成立する時に反復処理(イテレーション)をするfor文を記載する。<br> また、range関数とzip関数を使用した処理も併せて記載する。<br> <br> 反復処理が可能(イテラブル)なオブジェクト(文字列、リスト、タプル、辞書等)を使用して反復処理を行うにはfor文を使用する。<br> <br><br> == for-in文で反復処理をする == Pythonでfor文を使ってループ処理のコードを書くには、forの後ろに繰り返し変数を記述する。<br> 続けて、inキーワードを記述した後にリストなどのシーケンスを記述して、末尾にコロンを置く。<br> <syntaxhighlight lang="python"> for 繰り返し変数 in シーケンス: 実行コード </syntaxhighlight> <br> 以下の例では、リスト変数から各要素を取得している。<br> <syntaxhighlight lang="python"> lang = ["Python","PHP","Swift"] for i in lang: print(i) # 出力 Python PHP Swift </syntaxhighlight> <br> 次に、文字列をシーケンスとして使用する。<br> 以下の例では、Pythonという文字列を、繰り返し変数をsとして、1文字ずつ取得している。<br> <syntaxhighlight lang="python"> for s in "Python": print(s) # 出力 P y t h o n </syntaxhighlight> <br><br> == break文でfor文を抜ける == for文でも、while文と同様にbreak文を使用して反復処理を抜けることができる。<br> 以下の例では、取得した文字がhの時にfor文から抜ける処理をしている。<br> <syntaxhighlight lang="python"> for s in "Python": if s == "h": break print(s) # 出力 P y t </syntaxhighlight> <br><br> == continue文で処理をスキップする == continue文を使用して、処理をスキップして再度反復処理の先頭に戻ることができる。<br> 以下の例では、指定した文字hの場合のみ処理がスキップしている。<br> <syntaxhighlight lang="python"> for s in "Python": if s == "h": continue print(s) # 出力 P y t o n </syntaxhighlight> <br><br> == for文のelse文とbreak文 == for文もwhile文と同様に、処理が終わったら何か別の処理をする場合にelse文と組み合わせることができる。<br> 以下の例のように、else文を最後に付け加えるだけである。<br> <syntaxhighlight lang="python"> lang = ["Python","PHP","Swift"] for i in lang: print(i) else: print("Done!") # 出力 Python PHP Swift Done! </syntaxhighlight> <br> また、以下の例では、break文と組み合わせている。<br> break文で反復処理を抜けると、else文の処理は実行されない。<br> このような処理は、break文が実行されなかった場合は、else文でチェックするような時に使用する。<br> <syntaxhighlight lang="python"> lang = ["Python","PHP","Swift"] for i in lang: if i == "PHP": break print(i) else: print("Done!") # 出力 Python </syntaxhighlight> <br><br> == for文と辞書(values関数とitems関数) == 辞書型変数をfor文で処理する場合を考える。<br> 次のような辞書型変数を用意して、for文で処理する。<br> print関数で出力されているものは、辞書のキーの部分である。このように、辞書型変数をfor文で処理するとキーが処理される。<br> <syntaxhighlight lang="python"> foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} for food in foods: print(food) # 出力 breakfast lunch dinner </syntaxhighlight> <br> 上記のサンプルコードは、次のように辞書型変数のkeys関数を使用した処理と同じである。<br> for文で辞書をそのまま使用してもkeys関数を使用しても、結果はどちらもキーが取得されることになる。<br> <syntaxhighlight lang="python"> foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} for food in foods.keys(): print(food) # 出力 breakfast lunch dinner </syntaxhighlight> <br> ===== for文と辞書のvalues関数 ===== 辞書の値を反復処理で取得する場合は、values関数を使用する。<br> 以下の例では、values関数を使用して辞書の値を取得している。<br> <syntaxhighlight lang="python"> foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} for food in foods.values(): print(food) # 出力 miso soup sandwich steak </syntaxhighlight> <br> ===== for文と辞書のitems関数 ===== 辞書のキーと値をセットでタプル型に変換して反復処理する場合は、items()関数を使用する。<br> <syntaxhighlight lang="python"> foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} for food in foods.items(): print(food) # 出力 ('breakfast', 'miso soup') ('lunch', 'sandwich') ('dinner', 'steak') </syntaxhighlight> <br> また、以下の例では、このタプルをそれぞれの変数にキーと値を代入する処理を行っている。<br> ピリオドと改行コードを文末に出力するために、print関数のendオプションを使用している。<br> それぞれキーと値が対応した位置に出力されている。<br> <syntaxhighlight lang="python"> foods = {"breakfast":"miso soup", "lunch":"sandwich", "dinner":"steak"} for food, menu in foods.items(): print("Yesterday, I had", menu, "for", food, end=".\n") # 出力 Yesterday, I had miso soup for breakfast. Yesterday, I had sandwich for lunch. 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> __FORCETOC__ [[カテゴリ:Python]]
Pythonの基礎 - 反復処理(for文)
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse