MathGroup Archive 2008

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

Search the Archive

Tagged list processing

  • To: mathgroup at smc.vnet.net
  • Subject: [mg86891] Tagged list processing
  • From: carlos at colorado.edu
  • Date: Tue, 25 Mar 2008 01:17:08 -0500 (EST)

This is related to a recent question. Best stated through an example.
I have two flat lists of equal length:

tag={0,0,1,0,0,  -3,0,0,0,0,          2,4,1,0,0};
val={0,0,4,5,6,  P,1/2,0,-3.0,a+4, 8,16.4,0,Sin[ang],Cos[ang]};

tag contains only integers whereas val can have numbers or
expressions that will (eventually) evaluate to a number.

Task. Generate a pointer list to all nz values in tag, and a
corresponding list of values:

nztag={3,6,11,12,13};   (* may be empty *)
nzval={4,P,8,16.4,0};   (* may be empty *)

and also build the complementary lists

ztag={1,2,4,5,7,8,9,10,14,15};
zval={0,0,5,6,1/2,0,-3.0,a+4, Sin[ang],Cos[ang]};

Obviously ztag=Position[tag,0]; but which
form argument do I use for nztag in Position[tag,form]?
Can I build zval  and nzval with Table for speed ?
(lists may contain 10^4 to 10^6  items)

Constraint: must work in 4.0 thru 6.0 since some of my
remote students have legacy academic versions. Thanks.


  • Prev by Date: Re: Mathlink: How do I pass arbitrary data from Mathematica to C?
  • Next by Date: Re: ListPlot Joined/Filling bug?
  • Previous by thread: Re: Basic plotting of an evaluated function
  • Next by thread: Re: Tagged list processing