Re: Request for help: working with multi-level lists

• To: mathgroup at smc.vnet.net
• Subject: [mg13695] Re: Request for help: working with multi-level lists
• From: Denis Foo Kune <kune at stsci.edu>
• Date: Sat, 15 Aug 1998 04:39:25 -0400
• Organization: Space Telescope Science Institute
• References: <6qp3mc\$al3@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```KCConnolly wrote:

> I have a list of 10 elements, each of which is a list of three elements
> (let's say in each case an integer, a real number, and a string). I am
> looking for the most elegant way to select those first-level elements
> (i.e., the lists) whose integer element is equal to a particular value
> (let's say "1"), and then to obtain the mean of the real number
> elements of the lists selected.

For a moderately elegant solution, you could use a simple recursive
algorithm as the following:
Assuming that your inner list has the following structure: {integer,
float, string}

-Is the list empty?
Yes- return Sum/(N of elements) //The base case
No- continue
-Is integer == key?
Yes- sum=sum+float, N=N+1, and recurse with the rest of the list
No- Restart with the rest of the list.

this algorithm will go through the list only once and return the mean as
demanded.
Now for a quick Mathematica code:

Helper[lst_,key_,s_,n_]:=
If[lst=={}
,s/n
,If[First[First[lst]]==key
,Helper[Rest[lst],key,(s+First[Rest[First[lst]]]),(n+1)]
,Helper[Rest[lst],key,s,n]
]
];
keyMean[lst_,key_]:=Helper[lst,key,0,0]

The last line is just the frontend of the small engine. You can just
call the function as
keyMean[ <list>, <key>]
e.g.:
keyMean[{{1,2.0,"sdafg"},{4,5.3,"sdfg"},{2,34.4,"fdg"},{1,3.8,"dfg"},{7,4.56,
"sgh"}},1]

Note that you can also use MemberQ instead of the long "First[Rest[.."
thing, but if some of your data happen to look like your key, you might
run into problems.
Hope that helps.
:-Denis

```

• Prev by Date: Re: High precision numbers and Plot[] ?
• Next by Date: Re: Request for help: working with multi-level lists
• Previous by thread: Re: Request for help: working with multi-level lists
• Next by thread: Re: Request for help: working with multi-level lists