おぼえがき

過ちては則ち改むるにうんぬんかんぬん

集合内包表記について(Python)

f:id:feci:20210726231508j:plain

Python3


Python3.8.5における集合内包表記について。

#①集合を作る
aaa = set()         #空の集合を作る

for _ in range(10): #forループで0++の値を10回変数_に代入する
  aaa.add(_)        #1ループ毎に変数_の値を変数aaaに代入する

print(aaa)          #{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}


#②①を内包表記で作る
bbb = {_ for _ in range(10)} #先頭でbbb.add()の値を指定する
print(bbb)          #{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}


#③①よりも複雑なプログラムで集合を作る
ccc = set()

for _ in range(10):
  if _ % 2 != 0:  #変数_を2で割った余りが0のときだけ下の行の処理を実行
    ccc.add(_)

print(ccc)        #{1, 3, 5, 7, 9}


#④③を内包表記で作る
ddd = {_ for _ in range(10if _ % 2 != 0#for文の後ろに続けて書くだけ
print(ddd)        #{1, 3, 5, 7, 9}

集合内包表記とは、集合を作成する方法のひとつです。

 

①のようなプログラムを内包表記で記述すると、②のようになります。

これを集合内包表記と呼びます。

 

②のプログラムのように集合を内包表記で作る場合は、ブレイス(波括弧)の最初の部分で bbb.add() の括弧内に該当する値を指定する必要があります。

そのあとのforから続くブレイス内の記述は、内包表記ではない①のパターンとまったく同じです。

 

ですから③のようなfor文の中にif文があるようなプログラムで作った集合を内包表記で作る場合は、④のようにfor文の後に続けてif文を書くだけでOKです。

 

 

以上です。