Listas anidadasHe generado una lista anidada de columnas debido a que estaban agrupadas inicialmente. Quisiera eliminar la anidación para tener una lista continua de columnas con las que puedo trabajar.
En lugar de {{:A, :B, :C}, (:D, :E, :F}}, me gustaría llegar a {:A, :B, :C,
, :E, :F}
Automatización y scriptingRe: Listas anidadasAquí tienes una opción, suponiendo que todos los elementos de la lista externa son listas. Si no lo son, solo necesitas añadir un poco más de código para gestionarlo.
Names Default to Here( 1 );
this_list = {{:A, :B, :C}, {:D, :E, :F}};
new_list = {};
For Each( {v, i}, this_list,
For Each( {val, idx}, v,
Insert Into( new_list, val )
)
);Re: Listas anidadasSólo tienes que concatenar las listas individuales;
Names Default To Here( 1 );
l1 = {{:A, :B, :C}, {:D, :E, :F}};
l2 = l1[1] || l1[2];
Te sugiero que te tomes el tiempo de leer la sección de la Guía de Scripting sobre la creación y manipulación de Listas.
Re: Listas anidadasTuve que ajustarlo. Ya funciona. Gracias.
For Each( {val, idx}, this_list,
Insert Into( new_list, val )
);
Re: Listas anidadasAh, lo siento. Estaba probando con cadenas y olvidé que al insertar una lista dentro de otra, se insertan los elementos no evaluados de la lista. Si tienes columnas que no están dentro de una lista anidada, se insertarán como faltantes, por ejemplo:
Names Default To Here( 1 );
this_list = {{:A, :B, :C}, :D, {:E, :F, :G}};
new_list = {};
For Each( {v, i}, this_list, Insert Into( new_list, v ) );
//{:A, :B, :C, ., :E, :F, :G}
Puedes resolver el problema usando Name Expr():
Names Default To Here( 1 );
this_list = {{:A, :B, :C}, :D, {:E, :F, :G}};
new_list = {};
For Each( {v, i}, this_list, Insert Into( new_list, Name Expr( v ) ) );
//{:A, :B, :C, :D, :E, :F, :G}Re: Listas anidadasBasándonos en la solución de Jim, si tienes más de dos sublistas:
Names Default To Here( 1 );
l1 = {{:A, :B, :C}, {:D, :E, :F}, {:G, :H, :I, :J}};
l3 = {};
for (i = 1, i <= nitems(l1), i++,
insertinto(l3, l1[i]);
);
print(l3);
{:A, :B, :C,
, :E, :F, :G, :H, :I, :J}