Listes imbriquéesJ'ai généré une liste imbriquée de colonnes, car elles avaient été initialement regroupées. Je souhaite supprimer cette imbrication pour disposer d'une liste continue de colonnes sur lesquelles je peux agir.
Au lieu de {{:A, :B, :C}, (:D, :E, :F}}, je voudrais arriver à {:A, :B, :C,
, :E, :F}
Automatisation et scriptsRe: Listes imbriquéesVoici une méthode, en supposant que les éléments de la liste externe sont tous des listes. Si ce n'est pas le cas, il suffit d'ajouter un peu de code pour gérer ce problème.
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: Listes imbriquéesIl vous suffit de concaténer les listes individuelles ;
Names Default To Here( 1 );
l1 = {{:A, :B, :C}, {:D, :E, :F}};
l2 = l1[1] || l1[2];
Je vous suggère de prendre le temps de lire la section du Guide de script sur la création et la manipulation des listes.
Re: Listes imbriquéesJ'ai dû modifier ça. Ça marche maintenant. Merci.
For Each( {val, idx}, this_list,
Insert Into( new_list, val )
);
Re: Listes imbriquéesAh, désolé. Je testais sur des chaînes et j'avais oublié qu'insérer une liste dans une autre insérait les éléments non évalués de la liste. Si vous avez des colonnes qui ne sont pas dans une liste imbriquée, elles seront insérées comme manquantes, par exemple :
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}
Vous pouvez résoudre le problème en utilisant 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: Listes imbriquéesEn s'appuyant sur la solution de Jim. Si vous avez plus de deux sous-listes :
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}