MathGroup Archive 1996

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

Search the Archive

Re: How can this MapAt application be done more efficiently

  • To: mathgroup at smc.vnet.net
  • Subject: [mg4235] Re: [mg4180] How can this MapAt application be done more efficiently
  • From: Mary Vlastnik Armon <marmon at knox.edu>
  • Date: Tue, 18 Jun 1996 03:29:21 -0400
  • Sender: owner-wri-mathgroup at wolfram.com


On Tue, 11 Jun 1996, Joel Cannon wrote:

> 
> I have written a function to Drop any zero's from a table of numbers.
> Here is an example:
> 
> 	In[161]:= dropzero[ {{5, 0}, {4, 1}, {3, 2, 0}, {3, 1, 1}} ]
> 
> 	Out[161]= {{5}, {4, 1}, {3, 2}, {3, 1, 1}}
> 


Here's something that appears to work, and it doesn't depend on the 
position of 0 in the sublists:

In[25]:=
dropzero1[a_] := DeleteCases[a,(x_/;x==0),2]

In[26]:=
dropzero1[ {{5, 0}, {4, 1}, {3, 2, 0}, {3, 1, 1}} ]
Out[26]=
{{5}, {4, 1}, {3, 2}, {3, 1, 1}}

It deletes everything equal to 0 at level 2 of the list you give it, so
you'd have to change the level specification for more deeply nested lists. 
If you found it necessary to do that, you could make it an option in the
function definition and set the default level as 2: 

In[39]:=
dropzerolevel[a_,levels_:2]:= DeleteCases[a,(x_/;x==0),levels]

In[40]:=
list={{5, 0}, {4, 1}, {3, 2, {0,Pi}}, {3, 1, 1}};

Here, you only drop the zeros at level 2:

In[41]:=
dropzerolevel[list]

Out[41]=
{{5}, {4, 1}, {3, 2, {0, Pi}}, {3, 1, 1}}

Here, you drop the zeros at levels 2 and 3:

In[42]:=
dropzerolevel[list,{2,3} ]

Out[42]=
{{5}, {4, 1}, {3, 2, {Pi}}, {3, 1, 1}}

Also, I think the difficulty you were having with MapAt and Drop was that 
you needed Drop[#,-1]& (the "&" is what you appeared to be missing.)


This may be way more than you wanted to know, but I hope it helps--

Mary Vlastnik Armon
Dept. of Mathematics
Knox College
Galesburg, IL 61401

==== [MESSAGE SEPARATOR] ====


  • Prev by Date: Error Bars in ListPlot
  • Next by Date: Re: How can this MapAt application be done more efficiently
  • Previous by thread: Re: How can this MapAt application be done more efficiently
  • Next by thread: Re: How can this MapAt application be done more efficiently