Pythonでイテラブルなオブジェクトから要素をひとつひとつ抜き出して同じ処理をする場合、for in文が使われます。
これは、プログラムの中でも代表的なアルゴリズムになります。
今回はさらにPythonのfor in文の活用法を紹介していきます。
enumerate()の使い方
Pythonのfor in文では、enumerate()関数を使うと、forループの中でリスト(配列)などのイテラブルオブジェクトの要素と同時にインデックス番号(カウント、順番)を取得できます。
記述のポイントは、for と in の間に記述する変数を1つから2つにすることです。最初の変数にインデックス番号が格納され、次の変数に要素の値が格納されます。
処理
enumerate()を使用した例
subject_list = ["Japanese","English","Math","Science","Society"] for i,j in enumerate(subject_list): print(i,j)
結果
0 Japanese
1 English
2 Math
3 Science
4 Society
for inで指定した変数を使わない場合
for in文では要素の数だけループさせることができます。そのため、特に要素の値は使用しないけれども要素数だけループさせたい場合もあります。
そのような場合、通常通りの書き方もできますが、特に変数は使ってないことを知らせるために変数名をアンダースコア_ にする場合があります。時々そのようなコードを見かけますがその場合この変数は使ってないとわかります。
アンダースコアを変数に使用した例
numから取り出した数値を使用せずに、要素の数だけHelloを表示させています。
num = [1, 2, 3, 4] for _ in num: print('Hello')
結果
Hello
Hello
Hello
Hello
変数として使われるアンダースコアは他にも、インタープリタで最後に実行した結果を保持してくれたりもします。
continueの使い方
continueを使用するとループの次のイテレーション にジャンプします。
例えばループを繰り返す中で、ある条件の時だけスキップしたい場合などに使います。
continueの例
奇数だけ表示しています。
for i in range(20): if i % 2 ==0: continue else: print(i)
結果
1
3
5
7
9
11
13
15
17
19
breakの使い方
break文に到達するとループを中止します。
つまり、ループの途中で、何らかの条件に当てはまる時にループを中止したい場合に使います。
breakを使ったループの例
for i in range(20): if i == 16: # i > 15でも同様の結果 break else: print(i)
結果
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for in文で辞書の取り出し
Pythonのfor in文はイテラブルなオブジェクトから要素を取り出すことができます。
そのため、リストだけではなく、辞書から要素を取り出すこともできます。
ただし、注意が必要なのは要素の値ではなく、キーが取り出されることです。
辞書から値だけ取り出したい場合は、values()を活用します。
また、辞書からキーと値の両方を取り出したい場合は、items()を活用します。
辞書でfor in文を使用した例
my_dict = {'apple':'りんご', 'orange':'みかん', 'grape':'ぶどう'} for val in my_dict: print(val)
結果
apple
orange
grape
明示的にキーを取り出す方法
keys()を活用した方法
for k in my_dict.keys(): print(k)
辞書から値だけ取り出す方法
values()を活用した方法
for v in my_dict.values(): print(v)
辞書からキーと値の両方を取り出す方法
items()を活用した方法
for i in my_dict.items(): print(i)
参考になった書籍
プログラミングを少しでも経験がありPython の文法を学習する場合は、「入門 Python 3」が良いと思います。長く使えます。
「退屈なことはPython にやらせよう」はオブジェクト指向の解説がないです。代わりにPythonを使った便利な実例が初心者には嬉しい内容です。正規表現から、簡単なスクレイピング 、画像操作などあります。ただし、中級者以上には少し物足りないかもしれません。
Pythonサンプルのダウンロード
ここでダウンロードする「for_in.ipynb」ファイルは、このPython動画で使用したものです。
Python入門一覧
- Python入門 クラスの継承とオーバーライド(動画あり)
- Python入門 オブジェクト指向について、クラスの作り方(動画あり)
- Python入門 lambda関数の使い方、map関数の使い方(動画あり)
- Python入門 位置引数、キーワード引数、デフォルト引数、便利な引数の使い方(動画あり)
- Python入門 グローバル変数とローカル変数(動画あり)
- Python入門 モジュールのインポートとrandomモジュール(動画あり)
- Python入門 関数の定義方法(動画あり)
- Python入門 内包表記(動画あり)
- Python入門 zip関数(動画あり)
- Python入門 for in文の活用(動画あり)
- Python入門 for in文の基本(動画あり)
- Python入門 三項演算子(動画あり)
- Python入門 if文の使い方2 while文の使い方(動画あり)
- Python入門 if文の使い方(動画あり)
- Python入門 浅いコピーと深いコピー(動画あり)
- Python入門 参照渡し(動画あり)
- Python入門 集合(動画あり)
- Python 入門 辞書(動画あり)
- Python 入門 タプルについて(動画あり)
- Python入門 リストのメソッド(動画あり)
- Python入門 リストのスライス(動画あり)
- Python入門 リスト
- Python入門 BMI課題 (動画あり)
- Python入門 文字列の連結とフォーマット1(動画あり)
- Python入門 文字列のフォーマット2(動画あり)
- Python入門 エスケープと型変換とinput()の使い方(動画あり)
- Python入門 pep8(動画あり)
- Python入門 変数の練習(動画あり)
- Python入門 変数(動画あり)
- Python入門 文字列(動画あり)
- Python入門 演算子(動画あり)
- Python入門 Python をはじめよう! (動画あり)