【GMOリサーチではエンジニアを募集中です】採用情報はこちら!

ひよっ子Kaggle Expertの選んだPythonの便利でカッコ良い構文と機能10選

ひよっ子Kaggle Expertの選んだPythonの便利でカッコ良い構文と機能10選

グローバルシステム本部ITセキュリティ&品質管理部、ひよっ子Kaggle(https://www.kaggle.com/)  Expertの廣橋です(2021年2月2日現在のランク : 949/154,169)。

主な業務は、情報セキュリティの維持/強化です。
業務終了後は、結構、Kaggleのコンペに参加しています。

Kaggleにおいて、プログラミング言語といえばやはりpythonですが、折角python(※1)(※2)でプログラミングしているなら、pythonらしい構文/機能でカッコよく読み書きしたいですよね。

ということで、今日はkaggleでもよく見かけるpythonの便利でカッコ良い構文/機能を10個、私が便利だなと思った順でご紹介していこうと思います。

ただ、こういった構文や機能を使う場合は以下のような利点/欠点がありますので、是非状況にあったものを使ってみて下さい。

利点:カッコ良くて、簡潔に書けて、理解しやすく、打ち込むのも楽。
欠点:知らない人には、何が書いてあるか分からない。適切に使わないと、かえって分かりにくくなる。

それでは早速、1位から紹介して行きます。

第1位 zip()

複数の要素に対して処理を繰り返す時に便利です。

以下の例では、‘a’, ‘b’, ‘c’のキー( key )と’apple’, ‘banan’, ‘coconut’の値( value )から辞書を作ります。keyとvalueをまとめて処理するので、見た目がスッキリしています。

  • 準備
  • 実行
  • 結果

>>> dict_fruit{'a': 'apple', 'b': 'banana', 'c': 'coconut'}

上記を使わない場合は、以下のように、最初から作っておくのが良さそうですが、keyとvalueが沢山あると、これでは辛いですね。

  • zipを使わない場合

第2位 リスト内包表記

リスト内包表記を使うと、各要素に対する条件や操作を適用して、新しいリストを簡単に作れます。便利ですね。

  • 実行

>>> num_list = [i**2 for i in range(10)]

  • 結果

上記を使わない場合は、以下のようになると思います。ちょっと面倒ですね。

  • リスト内包表記を使わない場合

第3位 3項演算子

何かの条件によって、変数へ代入する値を変えたい場合って、当然ありますよね。

3項演算子を使うと、以下のように1行で書けます。

  • 準備

>>> a = 1

  • 実行

>>> x ='even' if a % 2 == 0 else 'odd'

  • 結果

普通に書くと以下のような感じなので、3項演算子の方がスッキリしますね。

  • 3項演算子を使わない場合

第4位 map()

リストの要素のそれぞれに処理を適用する場合に便利です。このような関数を引数とする関数は、難しく言うと「高階関数」(※2)と呼ばれます。map関数を使わなくても同様のコードは書けますが、面倒なので使わない場合の例は省略します。

  • 準備
  • 実行
  • 結果

第5位 generator

next関数を呼ぶ度に、何かの処理をして値を返してくれます。最初に全部処理するのではなくて、必要になった時に初めて処理をするので、メモリなどのリソースを節約することができます。

  • 準備
  • 実行

第6位 enumerate()

forで繰り返し実行する場合に、要素だけでなくて、indexも欲しい場合がありますよね。そういった場合に、enumerateを使います。

  • 準備
  • 実行

第7位 glob()

あるパスの下の条件に合うファイルに、何かの処理をしたい場合は、これを使うと便利です。

  • 実行

第8位 lambda

第4位で出てきたmap関数を使うときに、「defで関数定義をするのが面倒くさい」と言う人には、lambda関数がおすすめ。1行で書けます。

  • 準備
  • 実行

>>> upper_fruits = list(map (lambda x:x.upper(), fruits))

  • 結果

第9位 count()

リストの要素の個数を数えるなんて簡単と思いますが、自分で関数を書くと結構大変。count関数を使えば、一発です。

  • 準備
  • 実行

第10位 sorted()

リストのデータを処理していると、アルファベット順とかに並べたい場合がありますよね。sortedを使えば、以下のように簡単です。大規模で複雑なデータの場合は、pandas(3)を使った方が便利な機能が多くて良いと思います。

  •  実行
  • 結果

あとがき

如何でしたでしょうか?

「知らなかった。」とか「知ってるけど、使ったことなかった。」という方は、相応しい場面で使ってみて下さい。カッコよくて見やすいプログラムになると思います。

「こんなの普段から使ってるよ。」という方は、かなりPythonを使いこなされていると思います。こういう考えもあるかと思っていただければ幸いです。

ここまでお読み下さり、ありがとう御座います。さてと、今晩は、Kaggle Masterを目指して、またコンペに挑戦しようかな。

GMOリサーチでは、WEBエンジニア(サーバーサイド、インフラ、フロントエンド)を随時募集しております。

興味のある方は、ぜひこちらからご応募ください!
詳しい募集要項など採用情報はこちら

参考文献/URL

  1. Python 3.9.1 ドキュメント: https://docs.python.org/ja/3/
  2. Pythonプログラミング入門:https://utokyo-ipp.github.io/
  3. Pandas: https://pandas.pydata.org/

開発ブログカテゴリの最新記事