Ruby中字符串的平均次数

Lui*_*igi 1 ruby arrays time average

我有一个数组:

array = ["0:00:31", "0:00:52", "0:01:05", "0:00:55", "0:01:33", "0:00:05", "0:00:01", 
      "0:05:10", "0:02:40", "0:03:03", "0:01:33", "0:00:00"]
Run Code Online (Sandbox Code Playgroud)

我需要平均数组中不等于的所有时间"0:00:00"."0:00:00"应该被抛弃.

最好的方法是什么?我正在循环遍历数组,删除所有0:00:00值,将字符串转换为整数并做一个平均值 - 但它似乎是我想要做的很多代码.

New*_*ria 7

(sz = array.reject    {|t| t == '0:00:00' }).
            map       {|t| Time.parse t   }.
            reduce(0) {|a, t| a += t.to_i }.to_f / sz.size
Run Code Online (Sandbox Code Playgroud)

您希望将这些内容分组为功能操作.拒绝你不需要的东西,然后采取其他措施.

reduce是获得阵列平均值的可行方法,并且之前已得到解答.


这是一个更简洁,更隐秘的替代方案

(sz = array.reject {|t| t == '0:00:00'     }).
            map    {|t| Time.parse(t).to_i }.
            reduce(:+).to_f / sz.size
Run Code Online (Sandbox Code Playgroud)

  • array.size将返回包含零的数组的大小.而不是`reduce(:+)`你可以使用`.sum`. (3认同)