<div dir="ltr">On Wed, Feb 26, 2014 at 5:32 AM, Slavin, Jonathan <span dir="ltr"><<a href="mailto:jslavin@cfa.harvard.edu" target="_blank">jslavin@cfa.harvard.edu</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div style="font-family:arial,helvetica,sans-serif">This behavior is a property of python slicing.  It takes some getting used to, but has its advantages. </div>

</div></div></blockquote><div><br></div><div style>quite a few, actually!</div><div style><br></div><div style>They key with slicing is to think of the index as pointing to the space between the elements:</div><div style>

<br></div><div style><br></div><div style>0  1  2  3  4  5</div><div style>   |   |   |   |   |   |  </div><div><br></div><div style>but the reason (and beauty) of this is that it results in a number of nifty properties:</div>

<div style><br></div><div style><br></div><div style><font face="courier new, monospace">len( seq [i:j] ) == j-i</font></div><div style><font face="courier new, monospace"><br></font></div><div style><font face="courier new, monospace">seq[i:j] + seq[j:k] == seq[i:k]</font></div>

<div style><font face="courier new, monospace"><br></font></div><div style><font face="courier new, monospace">len( seq[:i] ) == i</font></div><div style><font face="courier new, monospace"><br></font></div><div style><font face="courier new, monospace">len( seq[-i:] ) == i</font></div>

<div style><font face="courier new, monospace"><br></font></div><div style><font face="courier new, monospace"><br></font></div>and if you have an array representing a axis, for instance, and want to know the value of a given index:<div style>

<font face="courier new, monospace"><br></font></div><div style><font face="courier new, monospace">x = x_0 + i*dx</font></div><div style><font face="courier new, monospace"><br></font></div><div style>or the index of a given value:</div>

<div style><br></div><div style><font face="courier new, monospace">i = (x - x_0) / dx</font></div><div style><br></div><div style>Notice that I don't have a single +1 or -1 in all of that -- this make sit easier to undersand and a lot less error prone.</div>

<div style><br></div><div style>-Chris</div><div style> </div></div>-- <br><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R            (206) 526-6959   voice<br>7600 Sand Point Way NE   (206) 526-6329   fax<br>

Seattle, WA  98115       (206) 526-6317   main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a>
</div></div>