【问题标题】:How to project 2D array into new array in Ruby?如何将二维数组投影到 Ruby 中的新数组中?
【发布时间】:2012-01-19 13:10:01
【问题描述】:
source_array = Array.new(5) { Array.new(10) }
source_array[3][4] = 0
source_array[2][5] = 1
source_array[4][2] = 0.5

现在,创建一个与 source_array 维度相同的新数组destination_arraydestination_array 仅包含值 0 和 1。 source_array 中的任何 非 nil 值都映射到 destination_array 中的 1,所有 nil 值都映射到 0。

destination_array = Array.new(5) { Array.new(10, 0) }
...

在 Ruby (1.9.2) 中执行此操作的最佳方法是什么?

【问题讨论】:

    标签: ruby arrays multidimensional-array enumerable


    【解决方案1】:

    省略:

    destination_array = Array.new(5) { Array.new(10, 0) }
    

    改为使用:

    destination_array = source_array.map { |subarray| subarray.map { |item| item.nil? ? 0 : 1 } }
    

    这会给你你想要的。

    这里的关键是让迭代函数Array#map 为您执行工作,这样您就不必担心索引。这适用于您希望输入和输出数组具有相同维度的任何二维数组。

    【讨论】:

      【解决方案2】:
      destination_array = source_array.map { |arr| arr.map { |elem| elem.nil? ? 0 : 1 } }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多