我如何用ruby处理这个列表?

时间:2015-04-15 01:42:04

标签: ruby list zip tuples

我想将下面的列表作为元组数组的列表:

['Daisy', '80', '90', 'Amy', '90', '100', 'Anna', '88', '99']

更改为:

[['Daisy', '80', '90'], ['Amy', '90', '100'], ['Anna', '88', '99']]

我怎么能用ruby优雅地做到这一点?

2 个答案:

答案 0 :(得分:3)

尝试Enumberable#each_slice

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"]]