2012-07-19 6 views
33
Input >> list = [[1,2,3], [6], [3,4,5,6]] 

Output >> [1,2,3,3,4,5,6,6] 

quiero saber si hay algo más sencillo que estemaravilloso Método de lista de listas

l = [] 
list.each{ l = l + it } 
println l 

como un cierre maravilloso por defecto o método de combinar?

Respuesta

61

Try flatten, es decir:

list.flatten() 

O, para obtener el resultado que desea:

list = [[1,2,3], [6], [3,4,5,6]] 

assert list.flatten().sort() == [1,2,3,3,4,5,6,6] 
+0

funcionó! SO dice que necesito esperar 4 minutos más para aceptar la respuesta :) –

+6

Tenga en cuenta que la semántica de esto es diferente ya que recurre a través de las listas, produciendo resultados diferentes en situaciones como esta: '[[1,2,3] , [4, [5]], [6]]. Aplastar() '. La forma más limpia de hacer la concatenación del OP es 'list.collectMany {it}'. – Desty