Re: Union - simple question

• To: mathgroup at smc.vnet.net
• Subject: [mg49046] Re: Union - simple question
• From: koopman at sfu.ca (Ray Koopman)
• Date: Tue, 29 Jun 2004 04:50:32 -0400 (EDT)
• References: <cbol4e\$4e0\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Steve Gray <stevebg at adelphia.net> wrote in message
news:<cbol4e\$4e0\$1 at smc.vnet.net>...
> I don't understand why Union here doesn't work. (Sort is ok.)
> I want Union to eliminate list items where element [[1,2]] is
> duplicated. In this case, the first and third are duplicated because
> they both have '5' there.
>
>       ts = {{{1,2,3},5}, {{3,8,7},6}, {{7,8,9},5}, {{1,2,3},7}};
> Sort [ts, #1[[2]] < #2[[2]] &]
> Union[ts, Sametest -> (#1[[2]] == #2[[2]]&)]
>
> Any help will be appreciated.

In[1]:= ts = {{{1,2,3},5},{{3,8,7},6},{{7,8,9},5},{{1,2,3},7}}
Out[1]= {{{1,2,3},5},{{3,8,7},6},{{7,8,9},5},{{1,2,3},7}}

In[2]:= Sort@ts
Out[2]= {{{1,2,3},5},{{1,2,3},7},{{3,8,7},6},{{7,8,9},5}}

In[3]:= Reverse@Sort@ts
Out[3]= {{{7,8,9},5},{{3,8,7},6},{{1,2,3},7},{{1,2,3},5}}

In[4]:= sametest = (Print@{##}; #1[[2]] == #2[[2]]) &
Out[4]= (Print[{##1}];#1\[LeftDoubleBracket]2\[RightDoubleBracket]==#2
\[LeftDoubleBracket]2\[RightDoubleBracket])&

In[5]:= Union[ts, SameTest->sametest]
{{{1,2,3},7},{{1,2,3},5}}
{{{3,8,7},6},{{1,2,3},7}}
{{{7,8,9},5},{{3,8,7},6}}
Out[5]= {{{1,2,3},5},{{1,2,3},7},{{3,8,7},6},{{7,8,9},5}}

In[6]:= Union[Sort@ts, SameTest->sametest]
{{{1,2,3},7},{{1,2,3},5}}
{{{3,8,7},6},{{1,2,3},7}}
{{{7,8,9},5},{{3,8,7},6}}
Out[6]= {{{1,2,3},5},{{1,2,3},7},{{3,8,7},6},{{7,8,9},5}}

In[7]:= Union[Reverse@Sort@ts, SameTest->sametest]
{{{1,2,3},7},{{1,2,3},5}}
{{{3,8,7},6},{{1,2,3},7}}
{{{7,8,9},5},{{3,8,7},6}}
Out[7]= {{{1,2,3},5},{{1,2,3},7},{{3,8,7},6},{{7,8,9},5}}

It looks like Union first sorts the list, and then uses SameTest only to
check adjacent elements (which it passes to SameTest in reverse order!).

```

• Prev by Date: RE: PlotLabel with assigned variables *and* on several lines
• Next by Date: Re: Re: options Transpose[] ?
• Previous by thread: Re: Union - simple question
• Next by thread: Re: Union - simple question