Python中級者への道-Effective Python備忘録_01

python Python
python
スポンサーリンク

どうもです。バオウです。

<<<本ブログの目的>>>

Effective Pythonという良書があります。

Python入門を脱却して、そろそろ中級者

になりたいなーって人向けの書籍です。

この連載ではEffective Pythonの中身を

解説していきます。

ソースは全てGitHubに掲載していますので

ご自由に閲覧いただければと思います。

詳細は第0回をご覧ください。

 

それでは早速参りましょう。

 

項目7:mapやfilterの代わりにリスト内包表記を使う

ソースはこちら

ソース内に解説を書いてますので、ご覧ください。

内容をかいつまんで説明します。

 

項目7で筆者が言いたい事を端的に言いますと、

“map&filterの組み合わせは可読性に欠ける。同様の処理はリスト内包表記でも表現可能なので、できればそっちを利用して欲しい。”

と言う事です。

 

リスト内包表記の利便性

リスト内包表記は非常に利便性が高く、既存の

リストから、何かしらの処理を加えた新規リスト

を簡単に算出可能です。

ソース内に例を示していますが、例えばリストの各要素を

2乗して、新規リストを算出する事も簡単にできます。

 

また、既存リストに条件<if文>を追記してあげるだけで、

要素のフィルタリングが簡単にできてしまいます。

 

map&filter関数の組み合わせは可読性が悪い

同様の処理はmap&filter関数を組み合わせる事でも

実現可能です。しかし、それぞれにlambda式を定義して

あげないといかないので、可読性が著しく低下します。

また、map関数を適用した結果はmapobjectとして

返されますので、いちいちlistに値を渡してあげないと

いけません。

 

処理の比較

実際に、同様の処理を

1. リスト内包表記

2. map&filter関数の組み合わせ

で実現してみたソースを下記します。

どちらが可読性に富んでいますか?判断は個人に委ねます。笑

 

1. リスト内包表記の場合

2. map&filter関数の場合

 

まとめ

まとめますと、

・リスト内包表記はlambda式を使用しないので明確/明瞭な記述が可能

・map&filter関数の組み合わせでは記述を読み解くのがめんどくさい。

・いずれも同じ処理が可能

リスト内包表記使った方が良いのでは?

 

といった内容です。

 

※lambda式については触れませんでしたが、

こちらのリンク先に詳細まとめがありますので

参照願います。要は使い方次第です。

 

以上!

Python
スポンサーリンク
バオウをフォローする
マイナーなマイナー(Minor&Minner)

コメント

タイトルとURLをコピーしました