Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

Find last NZ in list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg46102] Find last NZ in list
  • From: carlos at colorado.edu (Carlos Felippa)
  • Date: Fri, 6 Feb 2004 04:15:25 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

This is kind of an "esthetics" question.  In a program I am writing
I need to find the last nonzero entry of a  1D list millions of
times.  For example FindLastNonzero[{1,2,3,4,0,a,b-b,0,0}] -> 6,
and FindLastNonzero[{0,0,0,0,0,0,0}] -> 0.
Here are two ugly C-style implementations:

FindLastNonzero[a_]:=Module[{n=Length[a]},   
     For [i=n,i>0,i--, If [a[[i]]==0,Continue[],Return[i],Return[i]]];
     Return[0]];
     
FindLastNonzero[a_]:=Module[{n=Length[a]},    
     For [i=n,i>0,i--, If [a[[i]]!=0,Return[i],Continue[i],Return[i]]];
     Return[0]];

Is there a built-in function, or something more elegant,
available to do this job?  Find only works for text streams.

Note that the If case "cannot tell if  entry is NZ" is important for
symbolic lists.  That case should be evaluated as NZ.


  • Prev by Date: Re: how to test if 2 expressions are the same? Mathematica 5.0
  • Next by Date: Re: how to test if 2 expressions are the same? Mathematica 5.0
  • Previous by thread: Re: queation exporting quaternions from mathematica 5
  • Next by thread: Re: Find last NZ in list