类Python-LINQ方法

2024-09-19 20:53:37 发布

您现在位置:Python中文网/ 问答频道 /正文

作为Python的新手,我真的很怀念LINQ方法。 我发现了this和{a2}问题,这对我理解Python枚举器和生成器的工作原理有很大帮助。在

但是sill,我想使用好的老方法,比如Select、SelectMany、First、Last、Group、Distinct等等。在

我知道,生成器和/或for表达式可以处理所有情况,但这会降低代码的可读性。在


Tags: 方法a2for表达式groupthislinqselect
2条回答

试试看py-linq!在

安装

pip install py_linq

使用

^{pr2}$

最后,我模拟了几乎所有的Linq方法,并制作了一个适当的包装器,这样您就可以链接方法。在

支持

any、all、first、first_or_none、last、last_or_none、to_list、to_dictionary、where、distinct、group_by、order_by、take、skip、select、select_many、foreach、concat、concat_item,除了_for、intersect

用法示例

# Chaining: ['#1', '#2', '#3']
print Linq([-1, 0, 1, 2, 3])\
        .where(lambda i: i > 0)\
        .select(lambda i: "#" + repr(i))

# Getting single item: 2
print Linq([1, 2, 3, 4]).first(lambda i: i > 1)

# Grouping by: {'even': [2], 'odd': [1, 3]}
print Linq([1, 2, 3])\
        .group_by(lambda i: "even" if i % 2 == 0 else "odd")

# I always loved this function: {1: 'This is number 1', 2: 'This is number 2', 3: 'This is number 3'}
print Linq([1, 2, 3])\
        .to_dictionary(lambda i: i, lambda i: "This is number " + repr(i))

源代码

^{pr2}$

如您所见,有些情况下python可以轻松处理,而有些情况则不然。把一块.NET放到Python上。在

相关问题 更多 >