标签: reduce

减少功能如何工作?

据我所知,reduce函数有一个列表l和一个函数f.然后,它f在列表的前两个元素上调用函数f,然后使用下一个列表元素和前一个结果重复调用该函数.

所以,我定义了以下功能:

以下函数计算阶乘.

def fact(n):
    if n == 0 or n == 1:
        return 1
    return fact(n-1) * n


def reduce_func(x,y):
    return fact(x) * fact(y)

lst = [1, 3, 1]
print reduce(reduce_func, lst)
Run Code Online (Sandbox Code Playgroud)

现在,这不应该给我((1! * 3!) * 1!) = 6吗?但是,相反它给出了720.为什么720?它似乎也是一个因素6.但是,我需要理解为什么.

有人能解释为什么会发生这种情况并解决问题吗?

我基本上想要计算列表中所有条目的阶乘的乘积.备份计划是运行循环并计算它.但是,我更喜欢使用reduce.

python reduce

40
推荐指数
5
解决办法
3万
查看次数

为什么Array.prototype.reduce()没有将空数组作为累加器?

我试图将一个大于10的数组中的所有元素过滤到一个新数组.我故意不使用,Array.prototype.filter()因为我想学习这个reduce()方法.这是我正在玩的代码

var collection = [3, 5, 11, 23, 1];

// fileter all the elements bigger than 10 to a new array

var output = collection.reduce(function(filteredArr, collectionElemet) {
  if (collectionElemet > 10) {
    return filteredArr.push(collectionElemet);
  }
}, []);
Run Code Online (Sandbox Code Playgroud)

我期望filteredArr在第一次回调执行时使用空数组初始化,因为这里提供了许多示例.但是当我运行这段代码时,我得到了错误 Cannot read property 'push' of undefined,我在哪里搞砸了?谢谢!

javascript arrays reduce

35
推荐指数
2
解决办法
1万
查看次数

通过rownames合并R中的2个以上数据帧

我从4 df收集数据,并希望通过rownames合并它们.我正在寻找一种有效的方法来做到这一点.这是我拥有的数据的简化版本.

df1           <- data.frame(N= sample(seq(9, 27, 0.5), 40, replace= T),
                            P= sample(seq(0.3, 4, 0.1), 40, replace= T),
                            C= sample(seq(400, 500, 1), 40, replace= T))
df2           <- data.frame(origin= sample(c("A", "B", "C", "D", "E"), 40,
                                           replace= T),
                            foo1= sample(c(T, F), 40, replace= T),
                            X= sample(seq(145600, 148300, 100), 40, replace= T),
                            Y= sample(seq(349800, 398600, 100), 40, replace= T))
df3           <- matrix(sample(seq(0, 1, 0.01), 40), 40, 100)
df4           <- matrix(sample(seq(0, 1, 0.01), 40), 40, 100)
rownames(df1) <- paste("P", sprintf("%02d", c(1:40)), sep= "")
rownames(df2) …
Run Code Online (Sandbox Code Playgroud)

reduce merge r dataframe rowname

33
推荐指数
4
解决办法
7万
查看次数

理解`Reduce`功能

我对R中的Reduce函数有疑问.我读了它的文档,但我仍然感到困惑.所以,我有5个基因名称的载体.例如:

v1 <- c("geneA","geneB",""...)
v2 <- c("geneA","geneC",""...)
v3 <- c("geneD","geneE",""...)
v4 <- c("geneA","geneE",""...)
v5 <- c("geneB","geneC",""...)
Run Code Online (Sandbox Code Playgroud)

我想知道哪些基因存在于至少两个载体中.有人建议:

Reduce(intersect,list(a,b,c,d,e))
Run Code Online (Sandbox Code Playgroud)

如果有人能够向我解释这个陈述是如何工作的,我将不胜感激,因为我已经看到Reduce在其他场景中使用过.

reduce r

31
推荐指数
3
解决办法
3万
查看次数

减少哈希值

我在使用reduce的语法时遇到问题.我有以下格式的哈希:

H = {"Key1" => 1, "Key2" => 2}
Run Code Online (Sandbox Code Playgroud)

我想使用reduce来查找此函数中值的总和.

就像是

H.reduce(0) {|memo, elem| memo+=elem}
Run Code Online (Sandbox Code Playgroud)

我知道这是错的.我不明白如何使elem成为哈希值.

ruby hash reduce

30
推荐指数
3
解决办法
3万
查看次数

使用reduce函数返回一个数组

为什么当我想在reduce函数中使用push函数返回一个新数组时,我得到一个错误.但是,当我在reduce函数中使用concat方法时,它返回一个没有问题的新数组.

我要做的就是将数组传递给reduce函数并返回相同的数组.

var store = [0,1,2,3,4];

var stored = store.reduce(function(pV,cV,cI){
  console.log("pv: ", pV);
  return pV.push(cV);
},[]);
Run Code Online (Sandbox Code Playgroud)

这会返回错误.但是当我使用concat时:

var store = [0,1,2,3,4];

var stored = store.reduce(function(pV,cV,cI){
  console.log("pv: ", pV);
  return pV.concat(cV);
},[]);
Run Code Online (Sandbox Code Playgroud)

它返回相同的数组.

有什么想法吗?

javascript arrays reduce

29
推荐指数
3
解决办法
3万
查看次数

R在Python中是否具有与reduce()相当的东西?

即:"将两个参数的函数累加到序列项中,从左到右,以便将序列减少为单个值."

reduce functional-programming r

28
推荐指数
1
解决办法
8193
查看次数

NameError:未定义全局名称'reduce'

我是Python的新手.你能告诉我以下代码有什么问题吗?当我运行它时,我收到一条错误消息"NameError:全局名称'reduce'未定义".我问Goolge但是没用.:(

def main():
    def add(x,y): return x+y
    reduce(add, range(1, 11))

if __name__=='__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

python reduce

28
推荐指数
2
解决办法
3万
查看次数

如何在空的Kotlin阵列上调用reduce?

简单地减少空数组将抛出:

线程"main"中的异常java.lang.UnsupportedOperationException:无法减少空的iterable.

链接时相同的异常:

val a = intArrayOf()

val b = a.reduce({ memo, next -> memo + next }) // -> throws an exception

val a1 = intArrayOf(1, 2, 3)

val b1 = a.filter({ a -> a < 0 }).reduce({ a, b -> a + b }) // -> throws an exception
Run Code Online (Sandbox Code Playgroud)

它是减少的预期操作还是一个bug?

有没有解决方法?

reduce kotlin

28
推荐指数
2
解决办法
6665
查看次数

python:可以减少被翻译成map,lambda和filter这样的列表推导吗?

当在Python编程,我现在避免map,lambdafilter通过使用列表理解,因为它是在执行中更容易阅读和更快.但也reduce可以替换?

例如,对象具有union()在另一个对象上工作的运算符a1.union(a2),并且给出相同类型的第三个对象.

我有一个对象列表:

L = [a1, a2, a3, ...]
Run Code Online (Sandbox Code Playgroud)

如何将所有这些对象的union()与列表推导相对应,相当于:

result = reduce(lambda a, b :a.union(b), L[1:], L[0])
Run Code Online (Sandbox Code Playgroud)

python reduce list map-function

24
推荐指数
4
解决办法
1万
查看次数