我昨天刚开始接受Nim。我的目标是计算表达式b [i] / a [i]中的平均值。我尝试使用数学模块和内置函数"意思是"但显然它只适用于数组。我不知道如何将我的循环结果解析成一个数组(或者可能有一个不同的解决方案?任何帮助都赞赏!
var a = @[100.0,102.0,101.0,114.0, 128.0, 130.0, 127.0]
var b = a [1..high(a)]&a[high(a)]
for i in low(a)..high(a):
echo i+1," period ", "= ", (b[i]/a[i])
答案 0 :(得分:1)
重要的一部分是使用var c = newSeq[float]()
创建一个新序列,并使用c.add(value)
为其添加值,如此处的第一个块:
var a = @[100.0, 102.0, 101.0, 114.0, 128.0, 130.0, 127.0]
var b = a[1..a.high] & a[a.high]
import math
block: # Iterative with math.mean
var c = newSeq[float]()
for i in a.low..a.high:
c.add(b[i]/a[i])
echo mean(c)
block: # Iterative without math.mean (most efficient)
var myMean = 0.0
for i in a.low..a.high:
myMean += b[i]/a[i]
myMean /= a.len.float
echo myMean
import sequtils
block: # Functionally (not really nim-like)
echo zip(a, b).map(proc(x): float = x.b/x.a).mean