将结果循环到数组

时间:2015-01-27 17:29:10

标签: nim

我昨天刚开始接受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])

1 个答案:

答案 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