【问题标题】:Iterating over elements in a nested list迭代嵌套列表中的元素
【发布时间】:2012-03-22 02:14:24
【问题描述】:

要遍历一维数组中的元素,我可以使用

array = [1, 2, 3, 4, 5, 6]
array.each { |x| puts x }

对于嵌套列表或二维数组有什么办法吗?在这段代码中:

two_d_array = [[1,2], [3,4], [5,6]]
two_d_array.each{|array| puts array}

我希望得到[1, 2], [3, 4], [5, 6],这样我就可以分别访问列表的每个元素并对其进行一些操作,例如array[1] = "new_value",但它给出了123456,如果可能的话,我想避免使用matrix

【问题讨论】:

    标签: ruby list iteration


    【解决方案1】:

    实际上each确实 以您期望的方式运行,但是puts 命令使它看起来好像数组已被预先展平。如果你添加一个inspect,这就很清楚了:

    >> two_d_array.each{|array| puts array.inspect}
    [1, 2]
    [3, 4]
    [5, 6]
    

    所以每次迭代中的array变量将是嵌套数组元素。

    【讨论】:

    • 或者他也可以用pp代替puts
    • 我试过 two_d_array.each{|array| funct(array)} 但该函数不接收单个列表作为参数。
    • 我有点困惑 - 那么发生了什么让您说funct 没有收到数组?可能有助于编辑问题并包含更完整的示例来说明您的问题。
    • @primpop 你最终得到这个工作了吗?如果是这样,请考虑将此答案标记为已接受!
    • @JonM 我在我展示的最初版本的基础上改变了“功能”。无论如何,您的回答有助于解决问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    相关资源
    最近更新 更多