MathGroup Archive 1996

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

Search the Archive

How can this MapAt application be done more efficiently

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}}

I would like to learn how to do it more efficiently. In what I am
doing, the 0's will always occur as the last element of the inner
lists (although it would be nice to have it work in general).

Here is my function, with another function that it calls:

     dropzero[a_] := MapAt[droplast,a, Partition[ Map[First,Position[a,0]],1] ]

      droplast[a_] := Drop[a, -1]

It feels to me like two things could be improved.

1. I had to define the function droplast because I couldn't figure out
how to use Drop[#,-1] with in the MapAt expression and get it to work.

2. Of less importance, 
the argument "Partition[Map[First,Position[a,0]],1]" seems a bit clumsy.

Thanks in advance,

Joel W. Cannon
Dept. of Physics
Centenary College of Louisiana
P. O. Box 41188
Shreveport, LA 71134-1188

(318)869-5026  FAX


  • Prev by Date: Mathematica-Matlab
  • Next by Date: Re: Re: The Mathematica Journal-Supplements
  • Previous by thread: Re: Mathematica-Matlab
  • Next by thread: Re: How can this MapAt application be done more efficiently