Re: help with lists operations
- To: mathgroup at smc.vnet.net
- Subject: [mg67844] Re: [mg67822] help with lists operations
- From: Selwyn Hollis <sh2.7183 at earthlink.net>
- Date: Mon, 10 Jul 2006 06:38:00 -0400 (EDT)
- References: <200607090850.EAA24679@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Here's one approach. I believe it handles the case of repeated
matches as well, and it's quite fast on long lists (although I'll no
doubt soon regret that claim).
This shows the steps clearly:
Map[{#, Cases[f2, {First[#], _}]} &, f1]
DeleteCases[%, {_, {}}]
Map[{#[[1, 2]], Last[Transpose[Last[#]]] } &, %]
Map[First[#]Last[#] &, %]
Total[Flatten[%]]
This wraps it all together:
Total[
Flatten[
First[#]Last[#] & /@
({#[[1, 2]], Last[Transpose[Last[#]]] } & /@
DeleteCases[
{#, Cases[f2, {First[#], _}]} & /@ f1,
{_, {}}])
]
]
--- Selwyn Hollis
On Jul 9, 2006, at 4:50 AM, omk wrote:
> Hi ALL,
> I am a novice in Mathematica, know that there are no easy ways for
> learning, so spent 2 weeks trying to solve an easy problem, but so
> far have only ugly solutions.
> Yes, I read and reread the Book as well as searched for similar
> problems on the Forum.
> I have 2 lists:
> f1={{2, 1}, {3, 1}, {7, 2}, {9, 1}, {10, 1}, {12, 1}, {14, 3}, {19,
> 3}, {23, 1}, {24, 1}, {25, 1}}
> f2={{2, 2}, {5, 1}, {
> 6, 2}, {10, 1}, {14, 3}, {16, 1}, {18, 1}, {21, 3}, {22, 1}, {26, 1}}
> I need to compare sublists (pairs) from the first list f1 with
> pairs from f2.
> If pairs with 2 first equal numbers exist, I have to multiply the
> second, after having products for all such pairs, I need to receive
> their sum.
> Say from f1 and f2 I have {2,1} and {2,2}, the product is 1 2=2,
> similar {10,1} and {10,1},{14,3} and {14,3},
> so it should be 2+1+9=12
> Any ideas are very welcome
> TIA,
> omk
>
- References:
- help with lists operations
- From: omk <omk@iname.com>
- help with lists operations