LINQのPython実装 "linqish"の紹介


LINQは.Netだけのものじゃない!!

Pythonのモジュールに面白いものがあったので紹介します。LINQ to ObjectsのPython実装「linqish」です。
LINQのメソッドチェイン構文をほぼ完全にサポートしています。

最新バージョンは0.5.2です。インストールは
pip install http://linqish-py.googlecode.com/files/linqish-0.5.2.zip
で行けると思います(私はPyCharm使ってるのでSettingからGUIでやりました)
Python2.7.5で確認しましたが、3.3.3では使えないようです

さっき見つけたばかりで、公式ドキュメントもなかったのですが直感でFizzBuzzは書けました。楽しい!

import linqish

fizzbuzz = linqish.Query(range(0, 100)).select(lambda x: x + 1).select(
    lambda x: "FizzBuzz" if x % 15 == 0 else "Fizz" if x % 3 == 0 else "Buzz" if x % 5 == 0 else x)

for i in fizzbuzz:
    print i

基本はこの部分

fizzbuzz = linqish.Query(range(0, 100))

linqish.Query(データ構造)で、.NetでいうIEnumerable<T>のインスタンスが生成されます。listとtupleは確認しましたがsetでもできるのかどうかは実験してないです
これ以降は見たとおり本家LINQと何ら変わらない書き方です。わかりやすい!

おそらくコードの短さや、実行速度なんかは組み込みのリスト内包表記には敵わないとは思いますが、他言語(特にC#)を書いている人がPythonでデータ構造をいじくるのにいきなりリスト内包表記はハードルが高いと思うので、
linqishのメソッドチェインでわかりやすく操作するのもいいと思います。

本当に公式ドキュメントがないので不安なところもありますがすごく面白いプロジェクトだと思うので今後も更新が続けられることを期待しています!