Когда-то я уже рассказывал про PyFunctional, который, в принципе, содержит полный набор действий над последовательностями, да ещё и с ленивыми вычислениями. Ну а сегодня поговорим про linqit – реализацию LINQ. По возможностям она сильно проигрывает в сравнении с PyFunctional, однако есть у неё всё же одна полезная фича: dynamic attributes. Например, можно написать users.age, и из каждого объекта из списка users будет выбрано значение атрибута age, которое уже будет сложено в новый список. Так что иногда linqit может оказаться полезнее. Ну а если вам скучно, можно интегрировать эту фичу в PyFunctional, хотя бы в виде метода attr или типа того.