1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. 内包問題

内包問題

内包

「内包」とはもともと集合論の「外延」と対になる言葉です。
外延は集合の内容を具体的に列挙し、内包はその性質により記述する。
1桁の正の偶数集合を考える
外延:(0,2,4,6,8)
内包:(x:xは0以上10未満の偶数)
それぞれPythonリストの
[0, 2, 4, 6, 8]
[x for x in range(10) if x % 2 ==0]
と似ていると思う。
最初のxは「xの集合を定義するよ」という宣言部、何度も出てくるのは
セパレータが無いため。後半部、は集合の「性質」を記述する部分に
書いてあるのは、ほとんど普通のforループそのものだ。
「最終的な要素の姿」「for文」で書き表せる。
後ろがゴチャゴチャする場合については、複数行にわたるfor文と条件節を、
セパレーターなしで一行で書いているだけです。

例1

>>> g1 = [2, 4]
>>> g2 = [3, -3]
>>>[ a * b for a in g1 if a > 3 for b in g2 if b>0]
[12]