我试图在pyodbc中传递表名作为参数来访问ms sql 2005中的数据.我试着用它替换它?但它永远不会奏效.我很乐意接受有关如何实现这一目标的任何建议.
我试图创建一个函数,以尾递归方式横向一个具有树状结构的对象,但到目前为止,我无法编写一个代码来执行它.
我的树像对象是:
case class Node(lex: String,
position: Int,
posTag: String,
var dependency: Int = -1,
var left: Vector[Node],
var right: Vector[Node])
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试过最简单的形式:
def matchNodes(goldSentence: LabeledSentence): Int = {
def condition(n: Node): Boolean = ???
@tailrec
def match0(acc: Int, n: Seq[Node]): Int =
(n: @switch) match {
case head :: tail => {
if (condition(head)) {
match0(acc + 1, tail)
} else {
acc
}
}
case _ => acc
}
match0(0, left) + match0(0, right)
}
Run Code Online (Sandbox Code Playgroud)
上面的代码是tailrec,但它不是横穿整个树,只是第一级.
其他方式是: …
阅读folds这本精彩的书时,我有一个问题foldr1以及head'那里提出的实现,有问题的代码是:
head' = foldr1 (\x _ -> x)
Run Code Online (Sandbox Code Playgroud)
此代码适用于无限列表,而不适用于foldl1。关于为什么是这个答案的一个很好的视觉解释。
我不太明白为什么它起作用,考虑到foldr1使用最后一个元素作为累加器。例如:
foldr1 (\x _ -> x) [1..]
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为(我认为)懒惰评估,即使foldr是从列表的最后一个元素(无限)开始,我假设因为该函数没有使用任何中间结果,只返回第一个元素。
那么,编译器是否足够聪明知道,因为仅在 lambda 函数内部x被使用,只返回列表的第一个元素?即使它应该从最后开始?
相反,做
scanr1 (\x _ -> x) [1..]
Run Code Online (Sandbox Code Playgroud)
将打印无限列表的所有元素而不会结束,我想这就是它foldr正在做的事情,只是编译器足够聪明,不会评估它并返回头部。
提前致谢。
我找到了一个非常好的答案,可以帮助我更深入地了解 foldr 的工作原理:
我想编写一个脚本,自动添加图像width和height我所有的img。我已经看到了这个问题:
使用 PHP 函数自动为 <img> 标签添加宽度和高度属性
但我正在使用jekyll.
我的第一个想法是grep在我的帖子目录上执行,并且对于 img 的每次出现,获取图像URI并计算其大小。这可能吗?
我也看了一下fastImage,但它不适用于 Jekyll 和本地文件(这是一个 Jekyll 过滤器)
你能给我一些关于如何做到这一点的点击吗?
我有一个与谷歌驱动器同步的回购,但我忽略了.git目录,所以它现在上传到谷歌驱动器.
最近我格式化了我的Gentoo机器,在我再次同步所有Google Drive文件后,我意识到.git目录不在那里.
问题是我不记得我是否在本地没有被推到github的一些未经标记/未经修改的更改.
我一直在寻找,但我只找到了相反问题的答案(克隆没有.git目录)
我不想做git clone我的回购,直到我确定可能的局部变化不会丢失.
有没有办法只克隆.git文件夹,然后推送我的机器中可能有的任何本地更改?
我试图在ios app中使用opencv实现拼接360全景图像(我们也在android应用程序中尝试过这样的代码).我已经实现了Stitcher类的简单缝合方法.但是,当我试图设置超过8个图像ios系统杀死应用程序,因为使用不正确的内存(android中的内存不足错误).有人可以建议我如何创建360全景图像?我用这样的代码:
Mat result;
Ptr<Stitcher> stitcher = Stitcher::create(Stitcher::PANORAMA, true);
// images that's array of Mat
Stitcher::Status status = stitcher -> stitch(images, result);
Run Code Online (Sandbox Code Playgroud)
我也尝试过这种方法
但我有同样的结果.
我在从Scala的Book FP中理解此代码时遇到问题。这是代码:
trait Monoid[A] {
def op(a1: A, a2: A): A
def zero: A
}
def endoMonoid[A]: Monoid[A => A] = new Monoid[A => A] {
def op(f: A => A, g: A => A) = f compose g
val zero = (a: A) => a
}
def foldMap[A, B](as: List[A], m: Monoid[B])(f: A => B): B =
as.foldLeft(m.zero)((b, a) => m.op(b, f(a)))
// The function type `(A, B) => B`, when curried, is `A => (B => …Run Code Online (Sandbox Code Playgroud) 我想更新 pandas 的一行中的一些单元格DataFrame,我正在update这样做,但它总是只修改第一个索引,这是一个例子:
df = pd.DataFrame(data={'cod':[1000,1001], 'B': ['b1','b2'], 'C':['c1','c2']})
updated_data = pd.DataFrame({'cod':[1001], 'C':['newC1']})
updated_data2 = pd.DataFrame({'cod':[1000], 'B':['newB1']})
df.update(updated_data)
df.update(updated_data2)
Run Code Online (Sandbox Code Playgroud)
执行此代码后,df 将具有:
cod B C
0 1000.0 newB1 newC1
1 1001.0 b2 c2
Run Code Online (Sandbox Code Playgroud)
应该在什么时候
cod B C
cod
1000 1000.0 newB1 c1
1001 1001.0 b2 newC1
Run Code Online (Sandbox Code Playgroud)
为了实现,我编写了以下代码,但不知道这是否是最好的方法:
df = pd.DataFrame(data={'cod':[1000,1001], 'B': ['b1','b2'], 'C':['c1','c2']})
df = df.set_index(df.cod)
updated_data = pd.DataFrame({'cod':[1001], 'C':['newC1']})
updated_data = updated_data.set_index(updated_data.cod)
df.update(updated_data, overwrite=True)
updated_data = pd.DataFrame({'cod':[1000], 'B':['newB1']})
updated_data = updated_data.set_index(updated_data.cod)
df.update(updated_data, overwrite=True)
Run Code Online (Sandbox Code Playgroud)
在我看来,对于简单的事情来说它非常冗长,还有其他方法吗?
这是实际的代码,而不是有两个 …
我正在阅读“Scala 编程”一书(红皮书)。
在关于 Monoids 的章节中,我理解了 Monoid 同态是什么,例如:M具有串联和length函数的 String Monoidf保留了Monoid结构,因此是同态的。
M.op(f(x), f(y)) == M.op(f(x) + f(y))
// "Lorem".length + "ipsum".length == ("Lorem" + "ipsum").length
Run Code Online (Sandbox Code Playgroud)
引用这本书(根据记忆,如果我错了,请纠正我:
当这在两个方向上发生时,它被命名为 Monoid isomorphisim,这意味着对于 monoids
M, N和函数f, g,f andThen g和g andThen f是identity函数。例如StringMonoid 和List[Char]Monoid with concatenation 是同构的。
但我不能看到看到这一个实际的例子,我只能想到f的length功能,但会发生什么g?
注意:我看过这个问题:What are isomorphism and homomorphisms。
functional-programming scala isomorphism monoids homomorphism
我正在读一本 Haskell 的书,其中一个练习要求懒惰地计算谐波函数,我带来了这个解决方案,我认为它很懒惰:
harmonic n = sum l
where l = take n (map (1/) [1..])
Run Code Online (Sandbox Code Playgroud)
但书上的答案似乎要复杂得多:
harmonic n = sum (take n seriesValues)
where seriesPairs = zip (cycle [1.0]) [1.0,2.0 .. ]
seriesValues = map
(\pair -> (fst pair)/(snd pair))
seriesPairs
Run Code Online (Sandbox Code Playgroud)
这让我相信我的方法实际上并不懒惰,但怎么会呢?我在那里处理一个无限列表。