草庐IT

reducing

全部标签

Swift 使用 reduce 和计算增量平均值

建议是逐步计算平均值下面的代码是我发现计算增量平均值的最佳方法,以便将其用于大数字和/或大数组下面是给这个数组加倍的例子letvalues=[14.0,12.0,23.4,37.5,11.46]varindex=1letavg=values.reduce(0.0){return$0+($1-$0)/Double(index++)}平均值将为19.672。并且有效。从你的角度来看,它是正确的吗?有没有办法用类似的东西来完成这个:letavg=values.averageIncr()我不喜欢的是我必须使用和索引?[更新]更进一步,感谢@MartinR的贡献protocolNumericTy

swift - 如何使用 reduce in swift 访问字典中的值?

我使用reduce从字典中获取了key,方法如下:letnamesAndScores=["Anna":2,"Brian":2,"Craig":8,"Donna":6]letnamesString=namesAndScores.reduce("",combine:{$0+"\($1.0),"})print(namesString)但我想知道如何使用reduce从dictionary中获取value?如有任何帮助,我们将不胜感激。谢谢。 最佳答案 使用reduce访问值和键?letdict=["John":"?","Donna":"?"

ios - 在 Swift 中使用嵌套 reduce

我有一个包含Double数组的数组,如屏幕截图所示:我的目标是获取每个数组的Double元素相乘的总和。这意味着,我想乘以每个数组的所有元素,然后在我的例子中,我将有3个值,所以我得到它们的总和。我想使用reduce,flatMap吗?或任何优雅的解决方案。我尝试了什么?totalCombinations.reduce(0.0){$0+($1[0]*$1[1]*$1[2])}但这只有在我知道包含double组的大小时才有效。 最佳答案 给定这些值letlists:[[Double]]=[[1.1,2.2,3.3],[4.4,5.5,

arrays - Array.reduce 无法通过下标赋值 : 'x' is a 'let' constant

我正在尝试对数组使用reduce函数:varfields=["gender","name","nickname"]varstats=fields.reduce([String:String]()){(res,field)->[String:String]inres[field]=json[field]??""returnres}它只是遍历fields数组并将值从json对象分配给res。对我来说似乎很简单,但编译器一直在说:error:cannotassignthroughsubscript:'res'isa'let'constant在线:res[field]=json[field]?

swift - 使用 reduce 对自定义对象数组内的属性值求和

我有以下模型classFoo{varvalue:Doublevarcolor:UIColorinit?(value:Double,color:UIColor){self.value=valueself.color=color}}如何使用reduce对[Foo]中的所有value属性求和? 最佳答案 就是这样letsum=array.reduce(0){$0+$1.value} 关于swift-使用reduce对自定义对象数组内的属性值求和,我们在StackOverflow上找到一个类似的

java - 从 reducer 访问映射器的计数器

我需要从我的reducer中的映射器访问计数器。这可能吗?如果是这样,它是如何完成的?举个例子:我的映射器是:publicclassCounterMapperextendsMapper{staticenumTestCounters{TEST}@Overrideprotectedvoidmap(Textkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{context.getCounter(TestCounters.TEST).increment(1);context.write(key,value);}

java - 在只有一个元素的列表上调用 stream().reduce()

我是java函数式编程的新手,想知道我应该如何编写代码来避免(例如)此操作中的NPE:myList.stream().reduce((prev,curr)->prev.getTimestamp().isAfter(curr.getTimestamp())?prev:curr);.get().getTimestamp();我的目的是找到列表中最新对象的时间戳。关于如何更好地收集最后一个元素的建议非常受欢迎,但我在这里的主要问题实际上是为什么这样做有效。文档说该函数抛出一个NullPointerException“如果归约的结果为null”:http://docs.oracle.com/j

java - 在 Stream reduce 方法中,恒等式必须始终为 0 求和和 1 乘法?

我继续java8的学习。我发现了一个有趣的行为:让我们看看代码示例://identityvalueandaccumulatorandcombinerIntegersummaryAge=Person.getPersons().stream()//.parallel()//willreturnsurprisingresult.reduce(1,(intermediateResult,p)->intermediateResult+p.age,(ir1,ir2)->ir1+ir2);System.out.println(summaryAge);和模型类:publicclassPerson{St

java - 为什么 Stream#reduce 不隐式接受处理父类(super class)型元素的累积函数?

考虑到这些类和累积函数,它们代表了我原始上下文的简化(但重现了相同的问题):abstractstaticclassFoo{abstractintgetK();}staticclassBarextendsFoo{intk;Bar(intk){this.k=k;}intgetK(){returnthis.k;}}privatestaticFoocombined(Fooa1,Fooa2){returnnewBar(a1.getK()+a2.getK());}我试图通过依赖一个单独的函数combined来执行项目的累积(最初是数据索引报告),它直接处理Foo类型的元素。Foooutcome=S

java - 在 Arrays.reduce(...) 中调用对象方法

我有以下3个文件,A.java:classA{privatefloatb;publicA(floatb){this.b=b;}publicfloatgetB(){returnb;}}C.java:importjava.util.Arrays;classC{privateA[]d;privateinti=0;publicC(){d=newA[2];}publicfloattotalB(){returnArrays.stream(d).reduce((e,f)->e.getB()+f.getB()).get();}publicvoidaddB(Ab){d[i++]=b;}}D.java:c