【发布时间】:2023-04-08 03:38:01
【问题描述】:
以下简单的LINQ代码
string[] words = { "hello", "wonderful", "linq", "beautiful", "world" };
// Get only short words
var shortWords =
from word in words
where word.Length <= 5
select word;
// Print each word out
shortWords.Dump();
可以如下使用列表推导翻译成python。
words = ["hello", "wonderful", "linq", "beautiful", "world"]
shortWords = [x for x in words if len(x) <=5]
print shortWords
- LINQ 只是实现列表理解的另一个想法吗?
- 哪些示例可能是 LINQ 可以执行但列表解析无法执行。
【问题讨论】:
-
如果您在 C# 中比较懒惰,请考虑改为:words.Where(w => w.Length
-
正如this epic explanation of monads 中所解释的,LINQ 被精心设计为单子,因此可以以简单、安全和有效的方式构建它。 Monad 和函数式编程的重要性正在迅速增加。所以我建议人们在他们的回答中解决这个问题。
-
@nealmcb monad 在不支持共享可变状态的语言中唯一重要,就像静态方法仅在不支持一流函数的语言中有用一样。这是一种强制意识形态纯洁性的方法,以允许编程范式做一些它不太适合的事情,只是为了完成。因此,monad 的重要性永远不会增加。绕过自我强加的限制是一个拐杖。泛型与动态类型是另一个例子。
-
@Davor 没有数据的类是不合逻辑的;对象是数据和作用于它们的方法。静态方法只是充当“漏洞”,以允许在意识形态纯洁性禁止此类事情的语言中使用独立功能。如果我可以在任何地方定义一个一流的函数,我就不需要把它粘在一个类中;我可以在没有它们的情况下用静态方法编写任何东西,而不会失去表达力或简洁性。它们在这种情况/语言中毫无用处。
-
@alcalde - 当您拥有仅在一个类中需要的第一类函数时,您看不到将其设为该类的私有静态并以这种方式限制其可见性有何意义?
标签: c# python linq list-comprehension