MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: List Comparison

  • To: mathgroup at smc.vnet.net
  • Subject: [mg67179] RE: [mg67141] List Comparison
  • From: "David Park" <djmp at earthlink.net>
  • Date: Sun, 11 Jun 2006 02:18:36 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

I don't know what you mean by "the difference from the list1 perspective"
and my result two does not agree with your sample result. Nevertheless,
straightening up the definition if I used the wrong one, you can proceed as
follows...

list1 = {{1, aa, 565}, {1, bb, 566}, {1, cc, 546}, {2, dd, 56}, {2, ff,
        56}, {2, ss, 5}};
list2 = {{1, aa, 34}, {1, bb, 66}, {1, cc, 5443}, {2, dd, 76}, {2, ff,
        87}, {2, mm, 87}};

result1[{a1_, b1_, c1_}, {a2_, b2_, c2_}] :=
  If[a1 === a2 && b1 === b2, {a1, b1, c1, c2},
   Unevaluated[Sequence[]]]

result2[{a1_, b1_, c1_}, {a2_, b2_, c2_}] :=
  If[(a1 =!= a2 || b1) =!= b2, {a1, b1, c1 - c2},
   Unevaluated[Sequence[]]]

result3[{a1_, b1_, c1_}, {a2_, b2_, c2_}] :=
  If[(a1 =!= a2 || b1) =!= b2, {a2, b2, c2 - c1},
   Unevaluated[Sequence[]]]

MapThread[result1, {list1, list2}]
{{1, aa, 565, 34}, {1, bb, 566, 66}, {1, cc, 546, 5443}, {2, dd, 56, 76},
{2,
    ff, 56, 87}}

MapThread[result2, {list1, list2}]
{{2, ss, -82}}


MapThread[result3, {list1, list2}]
{{2, mm, 82}}

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/


From: LectorZ [mailto:lectorz at mail.ru]
To: mathgroup at smc.vnet.net


Dear experts,

I want to compare two lists containing sublists and make out of them 3
result lists.
The comparison applies to the first two elements of the sublists.

list1 = {{1, aa, 565}, {1, bb, 566}, {
  1, cc, 546}, {2, dd, 56}, {2, ff, 56}, {2, ss, 5}}
list2 = {{1, aa,
  34}, {1, bb, 66}, {1, cc, 5443}, {2, dd, 76}, {2, ff, 87}, {2, mm,
87}}

Result ONE should be:

If the FIRST element AND the SECOND elements of the sublists are equal,
then prepend the THIRD elements from list2.

result1={{1, aa, 565, 34}, {1, bb, 566, 66}, {
  1, cc, 546, 5443}, {2, dd, 56, 76}, {2, ff, 56, 87}}

Result TWO should be:
the FIRST element OR the SECOND elements of the sublists are NOT equal,
then display the difference from the list1 perspective

result2={{2, ss, 5}}

Result THREE should be:
the FIRST element OR the SECOND elements of the sublists are NOT equal,
then display the difference from the list2 perspective
result3={{2, mm, 87}}

Thanks for your help

LZ



  • Prev by Date: Re: List Comparison
  • Next by Date: RE: Simple question from a biologist
  • Previous by thread: Re: List Comparison
  • Next by thread: Re: List Comparison