在格式化之前,我需要对字典文件进行排序.我使用了list.sort,它把它放在ascii顺序(大写字母小写前).所以我在网上找到了这个代码来进行排序.它有效,但我不完全理解lambda如何使用2个变量和cmp().我很困惑cmp正在比较以及lambda正在使用哪两个变量.请解释lambda如何在sort函数中使用cmp.
f = open("swedish.txt", 'r')
f2 = open("swed.txt", 'w')
doc = f.read().split('\n')
doc.sort(lambda x, y: cmp(x.lower(), y.lower()))
for line in doc:
f2.write(line + '\n')
f.close()
f2.close()
Run Code Online (Sandbox Code Playgroud) 我有多个Person对象,每个对象可能包含0个或更多Email对象.我需要搜索针对人员集合的人员,并查找记录,其中Person中包含的电子邮件地址也存在于人员记录集合中的任何一个中.然后我可以采取行动合并这些记录
下面的摘要类结构:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public IList<Email> Emails { get; set; }
}
public class Email
{
public string Label { get; set; }
public string Address{ get; set; }
public bool IsPrimary { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要找到一个列表并找到具有相同电子邮件地址的人.但是,我无法弄清楚如何构建一个匹配Person的LINQ查询并循环收集Person of obejcts并比较电子邮件地址?
理想情况下,这将是一个lambda,但很想知道创建它的一步一步的过程.
我没有看到错误,除非我遗漏了什么.
loadFiles :: FilePath -> IO [B.ByteString]
loadFiles dir = do
filePaths <- (getDirectoryContents dir)
mapM (\x loadFile (dir ++ x)) filePaths
Run Code Online (Sandbox Code Playgroud)
我收到了错误 main.hs:33:37: Parse error in pattern: dir ++ x
我有以下LINQ查询,我必须分开.Sum进入单独的调用,当我结合它们时,我得到了一个NaN.这不起作用:
var rejectRate = (results.Sum(x => x.TraysRejectedDay / x.TraysProcessedDay)) * 100;
Run Code Online (Sandbox Code Playgroud)
这确实有效:
var traysProcessed = results.Sum(x => x.TraysProcessedDay);
var rejectRate = (results.Sum(x => x.TraysRejectedDay / traysProcessed)) * 100;
Run Code Online (Sandbox Code Playgroud)
这仅仅是LINQ的限制还是我做错了什么?两个字段都是相同的数据类型(double)
我无法得到如何使这项工作:
default=lambda obj: return None if isinstance(obj, DataLoader)
Run Code Online (Sandbox Code Playgroud)
default变量是一个参数,json.dumps()所以TypeError如果被序列化的字典包含一个DataLoader对象,代码就可以不上升.
我正在使用LINQ子查询来获取数组中所有最小长度的单词.我想用Lambda Expression来做.
var names = new[] { "Tom", "Dick", "Harry", "Mary", "Jay" }.AsQueryable();
(
from n in names
where n.Length == names.Min (n2 => n2.Length)
select n
)
Run Code Online (Sandbox Code Playgroud)
输出:汤姆,杰伊
谢谢,Prakhar
我试图用java lambda expresions替换现有的循环.
我有简单的数据结构,如下所示:
class DbObject{
private Long objectId;
private Long basedOnObjectId; //<- this field can be null
public Long getObjectId() {
return objectId;
}
public void setObjectId(Long objectId) {
this.objectId = objectId;
}
public Long getBasedOnObjectId() {
return basedOnObjectId;
}
public void setBasedOnObjectId(Long basedOnObjectId) {
this.basedOnObjectId = basedOnObjectId;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个DbObjects列表
我尝试使用指定的basedOnObjectId过滤每个DbObject:
(1) list.stream().filter(object -> obejct.getBasedOnObjectId()
.equals(basedOnObject.getObjectId()))
.collect(Collector.of(List))
Run Code Online (Sandbox Code Playgroud)
当然这个代码给了我NullPointer,因为有些od DbObject没有BasedOnObjectId因为它们是根.
很自然的事情是替换字段"Long basedOnObjectId;" 通过可选,但正如我在开始时提到的那样,现有的生产代码是不是快速修复.
所以我试着做一些改变,我评估下面的句子:
Optional<Long> option = Optional.ofNullable(objectWithNullBasedOnId.getBasedOnObjectId());
Run Code Online (Sandbox Code Playgroud)
并尝试使用.get()方法或.ifPresent(),但.get()也会抛出空指针异常,ifPresent不专用于使用流.
我注意到这一事实,当我有DbObject with null basedOnObjectId时,我不必检查值是否完全为null但只跳过此执行步骤.
所以我决定使用.orElse()方法并返回一些假值.在这种情况下,我返回0L值,因为这个索引在DB中不存在:)
所以我的代码:
(2) List newList = …Run Code Online (Sandbox Code Playgroud) 我正在学习偏见以及何时使用它们.在这个关于partials vs lambdas的页面中,接受的答案解释了partialsover 的优点之一lambdas是partials具有对内省有用的属性.因此我们可以使用partials来执行以下操作:
import functools
f = functools.partial(int, base=2)
print f.args, f.func, f.keywords
((), int, {'base': 2})
Run Code Online (Sandbox Code Playgroud)
实际上,我们不能这样做lambdas:
h = lambda x : int(x,base=2)
print h.args, h.func, h.keywords
AttributeError: 'function' object has no attribute 'args'
Run Code Online (Sandbox Code Playgroud)
但实际上,我们不能用"普通"Python函数做到这一点:
def g(x) :
return int(x,base=2)
print g.args, g.func, g.keywords
AttributeError: 'function' object has no attribute 'args'
Run Code Online (Sandbox Code Playgroud)
为什么partials比普通的Python函数有更多的功能?这种设计的目的是什么?内省被认为对正常功能无用吗?
以下显然不会编译,所以我应该改变什么?
public bool IsFoobar(bool foo, bool bar)
{
return db.Foobars.SingleOrDefault(fb => ((fb.foo == foo) && (fb.bar == bar)));
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将值从IList集合(此处的实体)复制到stringbuilder as
Entites.Select(n => objStringBuilder.AppendLine(n.Note));
Run Code Online (Sandbox Code Playgroud)
任何人都可以指导我在这里做错了什么?
谢谢!