       Re: Return different values of a list

• To: mathgroup at smc.vnet.net
• Subject: [mg49435] Re: [mg49425] Return different values of a list
• From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
• Date: Tue, 20 Jul 2004 07:53:25 -0400 (EDT)
• References: <200407191146.HAA09125@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```[Numerous people posted similar messages about Union after
this one.  Those will not be posted. -- Moderator]

On 19 Jul 2004, at 20:46, Dr. Wolfgang Hintze wrote:

> *This message was transferred with a trial version of CommuniGate(tm)
> Pro*
> Given a list containing repeating values like e.g.
>
> x={a,b,c,a,c}
>
> I would like to produce a list containing each element just once
> i.e.
>
> y={a,b,c}
>
> What is the easiest way to accomplish this?
>
> Wolfgang
>
>
This is a classic question on this list. The "easiest" way is to take
Union:

Union[{a,b,c,a,c}]

{a,b,c}

but that sorts the elements. So if you do not want them to be sorted
than there are lots of possibilities, whose merits depend on the nature

OrderedUnion[li_]:=Block[{i,Sequence},
i[n_]:=(i[n]=Sequence[];n);i/@li]

Another approach (with a different evaluation order) uses Hold:

OrderedUnionH[li_] := ReleaseHold[Block[{i},
i[n_] := (i[n] = Hold[]; n); i /@ li]]

Other approaches will be faster for numerical lists. It really depends
on what sort of problem you want to use it on.

Andrzej Kozlowski
Chiba, Japan
http://www.mimuw.edu.pl/~akoz/

```

• Prev by Date: Re: ArcCos[x] with x > 1
• Next by Date: Question about shape of histogram of minimal prime partition p's
• Previous by thread: Re: Return different values of a list
• Next by thread: Re: Return different values of a list