Re: interchanging elements in a list

• To: mathgroup at christensen.cybernetics.net
• Subject: [mg2005] Re: [mg1993] interchanging elements in a list
• From: Richard Mercer <richard at seuss.math.wright.edu>
• Date: Thu, 14 Sep 1995 23:27:04 -0400

```>  Hi Group;
>

>  Am I the only Mma user to wonder why the obvious list
>  command  Interchange  is missing from Mma?  It is easy
>  enough to programm but why should we have to?  Interchange
>  is not a name used anywhere else in Mma (?), it is a
>  natural list operation, it is important in Gaussian
>  Elimination...
>

>  Presumably,
>

>  	Interchange[list_List,n,m]
>

>  should yield  list  with the nth and mth entries
>  interchanged.  Of course, Interchange might well be
>  designed to handle other heads besides List and perhaps
>  even have some level specs as options.
>

>  Jack Goldberg Univ. of Michigan

I agree entirely.

Here are four possible implementations.
The first is fastest; the third is shortest and is a condensation of the more
natural second one; the fourth is intermediate in both length and speed.

Interchange[list_List,n_,m_]:=

ReplacePart[ReplacePart[list,list[[n]],m],list[[m]],n];

Interchange[list_List,n_,m_]:=

list /. {list[[m]]->list[[n]],list[[n]]->list[[m]]};

Interchange[list_List,n_,m_]:=

list /. {#1->#2,#2->#1}& @@ Part[list,{m,n}];

Interchange[list_List,n_,m_]:=

Part[list,Range[1,Length[list]] /. {m->n,n->m}];

Richard Mercer

```

• Prev by Date: Is there a way of declaring a variable REAL?
• Next by Date: Log[E[n]]
• Previous by thread: interchanging elements in a list
• Next by thread: Re: Re: interchanging elements in a list