compress関数は第2引数の真理値判定がTrueになる要素に対応する第1引数の要素を残し、それ以外の要素は削除するイテレータ関数です。compress関数というとファイルとかデータを圧縮する処理とおもうかもしれませんが少し異なるので注意が必要です。
compress関数とは
compress()は第1引数のイテラブル特定の値を残してイテレータにして返す関数です。第2引数の同じ位置の真理値判定がTrueの要素のみ残します。第1引数と第2引数の長さが違う場合には短いほうの長さに切り詰められ処理がおこなわれます。
from itertools import compress
for s in compress([1,2,3,4],[True, False, True]):
print(s)
実行結果
1 3
上の例では第1引数と第2引数の長さが違います。第1引数のほうが長いため、第2引数に合わせて[1,2,3]ときりつめられます。第2引数の2番目の真理値判定がFalseのため、切り詰められた第1引数のうち2番目をのぞいた[1,3]が結果として返ります。(下図参照)
compress関数の使い方
よくある使い方としては単純に真理値判定がTrueのもののみを取り出すような使い方です。
from itertools import compress
l = ["東京都" ,"" ,"福岡県" ,"愛媛県" ,"" ,"大阪府"]
print(l)
cmp =[s for s in compress(l,l)]
print(cmp)
実行結果
['東京都', '', '福岡県', '愛媛県', '', '大阪府'] ['東京都', '福岡県', '愛媛県', '大阪府']
このように真理値判定がTrueの項目のみ抽出することができます。
まとめ
compress関数を用いると条件判定(True, False)で項目を削除したり、真理値判定がTrueの項目のみを抽出するなどができることがわかりました。 ループを回すよりも高速に簡単に判定できるのでcompress関数をうまく使ってみてください。
この記事へのコメント
コメントはまだありません。
コメントを送る