0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[光-Hikari-のPython]05章-07 制御構文(内包表記の条件分岐)

Posted at

#[Python]05章-07 内包表記の条件分岐
まず、以下のプログラムを見てください(プログラムを作成する必要はありません)

.py
L = []  #空リストLを作成する
print(L)  #Lの要素を出力

for i in range(10):
    if i % 3 == 0:  #3で割った余りが0の場合
         L.append(i)  #appendメソッドで、リストLに要素を追加

print(L)

【実行結果】
[]
[0, 3, 6, 9]

簡単に説明すると、空のリストLを作成し、いったん空のリストの要素をprint関数で出力しています。(もちろん空ですが)
そして、for文内に移動しますが、iが3の倍数(つまり3で割った余りが0)の場合、appendメソッドを用いてLの要素を1つずつ追加していきます。

最後にprint関数で要素の中身を出力しています。
しかし、このif文も含んだ処理を内包表記で表記することもできます。

##内包表記による条件分岐
では、先ほどの上記のプログラムを内包表記で表現してみます。

.py
[変数による計算結果 for 変数 in for 繰り返し対象 if 条件]

先ほどの上記のプログラムと同じ処理内容を、内包表記で記載してみましょう。今回はPython Consoleから以下のコードを入力してください。

.py
>>> [i for i in range(10) if i % 3 == 0]
[0, 3, 6, 9]

先ほどの05章-06のときの内包表記の後に、if文で条件を書くことで、内包表記の条件分岐となります。:(コロン)は必要ありません。

また、「変数による計算結果」の個所も少し改良してみましょう。今度は1以上100以下の値の中で10の倍数の値を3倍した値を求めてみましょう。Python Consoleから以下のコードを入力してください。

.py
>>> [i*3 for i in range(1, 101) if i % 10 == 0]
[30, 60, 90, 120, 150, 180, 210, 240, 270, 300]

もう1つ内包表記の条件分岐を見てみましょう。今度は、10以上50未満の値の中で、2乗した値が200未満の値を求めてみましょう。Python Consoleから以下のコードを入力してください。

.py
>>> [i for i in range(10, 50) if i**2 < 200]
[10, 11, 12, 13, 14]

確かに上記のリストの要素を2乗してみるとすべて200未満であることがわかります。

そしてもう1つ、先ほどのリストの結果の合計もすることができます。以下のようにsum関数を使用します。

.py
>>> sum([i for i in range(10, 50) if i**2 < 200])
60

##演習問題
演習問題を用意しました。ぜひ解いてみてください。なお、Python Consoleを利用してください。

【1】1以上100以下のの整数のうち、奇数のみの合計値を求めるプログラムをfor文を用いて作成してください。合計は2500となります。

【2】【1】の問題について、内包表記を用いて答えてください。 【3】1以上100以下の数値について、内包表記を用いて5の倍数のリストを作成し、そのリストの要素の平均値を求めてください。(ヒント:len関数を用います)

##最後に
内包表記では条件分岐も書くことができます。さらに前回触れませんでしたが、内包表記によって結果の合計を求めたり、平均を求めることができるので、簡潔に求める方法を身に着けていきましょう。

###【目次リンク】へ戻る

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?