らふのプログラミングメモ

プログラミングメモです。

リスト内包表記を使ってみよう。

プログラムを簡潔に書こうと思ってリスト内包表記をチャレンジした際に、
あれ?と思ったりしたことがあったので、まとめたいと思います。


Pythonにはリスト内包表記という方法で記述することができます。

リスト内包表記ってなに?

リスト内包表記を使うと、繰り返し行う処理(For文)などを
簡潔に書くことができます。

とりあえずプログラムを書いて比較してみよう

例題: y = 2x + 10 (0≦x≦10) を求めてみよう

  • For文で作ってみよう
y = []
for x in range(10):
    y.append(2 * x + 10)
print(y)

結果:
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28]

  • リスト内包表記を使ってみよう
y = [2*x+10 for x in range(10)]
print(y)

結果:
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28]

このようにリスト内包表記を使うと、プログラムが簡潔に書くことが可能になります。

説明:

# [計算したい式 for 変数 in 変数にいれたい数]
# 計算したい式:2 * x + 10
# 変数:x
# 変数に入れたい数:0~10 ということで、range(10)
y = [2*x+10 for x in range(10)]

リスト内包表記にif文も追加してみよう

例題: y = 2x + 10 (0≦x≦10) を求めてみよう (ただし、xは偶数のみ求める)

  • For文で作ってみよう
y = []
for x in range(10):
    if x % 2 == 0:
        y.append(2 * x + 10)
print(y)

結果:
[10, 14, 18, 22, 26]

  • リスト内包表記を使ってみよう
y = [2*x+10 for x in range(10) if x%2==0]
print(y)

結果:
[10, 14, 18, 22, 26]

説明:

# [計算したい式 for 変数 in 変数にいれたい数 if 条件]
# 計算したい式:2 * x + 10
# 変数:x
# 変数に入れたい数:0~10 ということで、range(10)
# 条件:ここの条件がTrueの場合のみ計算したい式の計算を行います。
y = [2*x+10 for x in range(10) if x%2==0]

<最終更新日:2021/08/31>

  • 内包表記をなぜか内容表記と書いていたため、修正しました!
  • 内包表記をリスト内包表記に修正しました。

2021/08/30 投稿