【问题标题】:Array Semi-Flattening阵列半展平
【发布时间】:2011-10-08 19:05:35
【问题描述】:

想要转换这个:

[["1", "2", "3"], ["4", "5", "6"]]

到这里:

["1", "2", "3"], ["4", "5", "6"]

被传递到 Array.product() 中,第一个数组可以包含未知数量的其他数组。例如,给定的数组也可能是

[["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]]

最终,我需要将参数传递为:

otherArray.product(["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"])

提前谢谢!

【问题讨论】:

    标签: ruby arrays arguments apply


    【解决方案1】:

    抛开最后一行代码,剩下的似乎用0索引解决了:

    arr[0]
    

    【讨论】:

    • 我不关注,那只会返回其他数组的第一个数组,不会动态包含所有数组
    【解决方案2】:
    otherArray.product(*[["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]]);
    

    * 在参数列表中用于将数组内容解包到参数(如 这里)或将参数打包到一个数组中,如“def mymethod(*args)”

    参考:http://www.justskins.com/forums/apply-method-to-array-17387.html

    【讨论】:

    • 在 Python 中也是一个非常有用的运算符。
    【解决方案3】:

    我认为对你有用的是使用 Ruby 的数组扩展:

    a=[[1,2,3],[4,5,6]]
    b=[1,2,3].product([1,2,3],[4,5,6])
    c=[1,2,3].product(*a)
    b == c #This should be true
    

    基本上将星号 (*) 放在变量前面会将数组中的所有元素展开为参数列表,这正是您想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多