Comment utiliser Flatten sur un élément spécifique d'une liste

Aug 15 2020

Disons que j'ai une liste {{1, 2, 3}, {4, 5}, ...}. Je veux faire ressembler la liste {1, 2, 3, {4, 5}, ...}. Je fais de cette façon:

list = {{1, 2, 3}, {4, 5}};
list2 = Flatten[list[[1]], 1];
list3 = Append[list2, list[[2]]]

Cela me donne un résultat correct. Mais y a-t-il un moyen simple de le faire?

Réponses

10 kglr Aug 15 2020 at 22:30

Pour aplatir la première liste d'une liste de listes:

Append @@ list
{1, 2, 3, {4, 5}}
{##& @@ #,##2}& @@ list
{1, 2, 3, {4, 5}}

En général, en plus des FlattenAt[list, 1]suggestions de Rohit dans les commentaires, vous pouvez utiliser

MapAt[Splice, list, {1}] (* in versions 12.1+ *)

MapAt[Apply[Sequence], list, {1}]

MapAt[Sequence&, list, {1, 0}]

ReplacePart[list, {1, 0} -> Sequence]

l = list; l[[1]] = Splice[l[[1]]]; l

l = list; l[[1,0]] = Sequence; l