覚え書きブログ

Pythonによる機械学習1(Pythonの基礎 3/4)

<< 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にて提出してください。

Pythonによる機械学習1(Pythonの基礎 4/4)>>