<< Pythonによる機械学習1(Pythonの基礎 2/4)
【Pythonによる機械学習1(Pythonの基礎 3/4)の目次】
for文とIf文とリスト内包表記
pythonのfor文とif文には、C言語と類似の記述をする通常のものと、リストの括弧[]内に記述するリスト内包表記があります。
【通常のfor文とif文】
for 変数A in データ集合: 変数Aを用いた処理A-1 変数Aを用いた処理A-2
if 条件B: 処理B elif 条件B2: 処理B2 else: 処理C
Pythonでは、他の言語と異なり、for文とif文内の処理ブロックは括弧{}で囲みません。その代わり行頭にインデント(タブまたはスペース)を空けて記述をすることにより処理ブロックを明示します。また、同じファイル内では共通のインデント(タブまたはスペース)を使うことがルールとなっていますので、タブとスペースを混在させることは出来ません。
【リスト内包表記のfor文とif文】
リスト内包表記は以下のようなフォーマットとなっていて、for文とif文を一行で記述することができます。
[変数Aを用いた処理A for 変数A in データ集合]
[処理B if 条件B else 処理C]
[変数Aを用いた処理B if 条件B else 処理C for 変数A in データ集合]
以下は、リスト内包表記を用いた例です。通常のfor文とif文では4行必要な処理を、1行で記述することができることを確認しましょう。
上記のスクリプトをファイルfor_loop.pyに保存し以下のように実行します。
> python loop.py 5以上の値 [10 8 6] 5以上の値 [10 8 6]
演習問題3
通常のfor文とif文、または、リスト内包表記のfor文とif文を用いて、valuesの5以上の値を+1に置き換えて、それ以外を-1に置き換えたnumpy.arrayのconvert_valuesを作ってみましょう。
>>> values array([10, 3, 1, 5, 8, 6]) >>> convert_values array([[ 1, -1, -1, 1, 1, 1]]) >>>作成したスクリプトおよび出力結果を、Moodleにて提出してください。