我想将下面的列表作为元组数组的列表:
['Daisy', '80', '90', 'Amy', '90', '100', 'Anna', '88', '99']
更改为:
[['Daisy', '80', '90'], ['Amy', '90', '100'], ['Anna', '88', '99']]
我怎么能用ruby优雅地做到这一点?
答案 0 :(得分:3)
list = ['Daisy', '80', '90', 'Amy', '90', '100', 'Anna', '88', '99']
list.each_slice(3).to_a
=> [["Daisy", "80", "90"], ["Amy", "90", "100"], ["Anna", "88", "99"]]
答案 1 :(得分:1)
另一种解决方案不需要您知道每个人拥有多少数字:
my_list = ['Daisy', '80', '90', 'Amy', '90', '100', 'Anna', '88', '99']
non_digit_word = -> x{x[/\D+/]}
p my_list.slice_before(&non_digit_word).to_a #=> [["Daisy", "80", "90"], ["Amy", "90", "100"], ["Anna", "88", "99"]]