小编ElB*_*ulP的帖子

将表名作为参数传递给pyodbc

我试图在pyodbc中传递表名作为参数来访问ms sql 2005中的数据.我试着用它替换它?但它永远不会奏效.我很乐意接受有关如何实现这一目标的任何建议.

python database odbc sql-server-2005 pyodbc

6
推荐指数
2
解决办法
3158
查看次数

在scala中以Tail递归方式遍历树状对象

我试图创建一个函数,以尾递归方式横向一个具有树状结构的对象,但到目前为止,我无法编写一个代码来执行它.

我的树像对象是:

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)

版本1,尾递归(不工作)

到目前为止,我尝试过最简单的形式:

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,但它不是横穿整个树,只是第一级.

版本2,尾递归(不工作)

其他方式是: …

recursion scala tail-recursion traversal

6
推荐指数
2
解决办法
838
查看次数

Haskell 上的 foldr1 和无限列表

阅读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 的工作原理:

/sf/answers/4422437421/

haskell fold

6
推荐指数
1
解决办法
106
查看次数

自动为图像标签添加宽度和高度属性

我想编写一个脚本,自动添加图像widthheight我所有的img。我已经看到了这个问题:

使用 PHP 函数自动为 <img> 标签添加宽度和高度属性

但我正在使用jekyll.

我的第一个想法是grep在我的帖子目录上执行,并且对于 img 的每次出现,获取图像URI并计算其大小。这可能吗?

我也看了一下fastImage,但它不适用于 Jekyll 和本地文件(这是一个 Jekyll 过滤器

你能给我一些关于如何做到这一点的点击吗?

html jekyll

5
推荐指数
1
解决办法
1339
查看次数

仅克隆git仓库的.git目录

我有一个与谷歌驱动器同步的回购,但我忽略了.git目录,所以它现在上传到谷歌驱动器.

最近我格式化了我的Gentoo机器,在我再次同步所有Google Drive文件后,我意识到.git目录不在那里.

问题是我不记得我是否在本地没有被推到github的一些未经标记/未经修改的更改.

我一直在寻找,但我只找到了相反问题的答案(克隆没有.git目录)

我不想做git clone我的回购,直到我确定可能的局部变化不会丢失.

有没有办法只克隆.git文件夹,然后推送我的机器中可能有的任何本地更改?

git version-control github

5
推荐指数
2
解决办法
6873
查看次数

用OpenCv拼接360全景

我试图在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)

我也尝试过这种方法

但我有同样的结果.

c++ opencv ios

5
推荐指数
0
解决办法
1224
查看次数

了解传递给折叠的咖喱函数

我在从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)

scala fold monoids

5
推荐指数
1
解决办法
74
查看次数

更新 pandas DataFrame 的特定行的单元格

我想更新 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)

在我看来,对于简单的事情来说它非常冗长,还有其他方法吗?

更新

这是实际的代码,而不是有两个 …

python dataframe pandas

5
推荐指数
1
解决办法
1897
查看次数

幺半群同态和同构

我正在阅读“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,这意味着对于 monoidsM, N和函数f, gf andThen gg andThen fidentity函数。例如StringMonoid 和List[Char]Monoid with concatenation 是同构的。

但我不能看到看到这一个实际的例子,我只能想到flength功能,但会发生什么g

注意:我看过这个问题:What are isomorphism and homomorphisms

functional-programming scala isomorphism monoids homomorphism

5
推荐指数
1
解决办法
319
查看次数

延迟计算谐波函数

我正在读一本 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)

这让我相信我的方法实际上并不懒惰,但怎么会呢?我在那里处理一个无限列表。

haskell

5
推荐指数
1
解决办法
104
查看次数