Sorry the message gets cuts off by an accidental press of send button. On 08/14/10 04:31, Lie Ryan wrote: > On 08/10/10 06:36, Bartc wrote: >> And if the context is Python, I doubt whether the choice of 0-based over a >> 1-based makes that much difference in execution speed. > > And I doubt anyone cares about execution speed when deciding whether to > use 1-based or 0-based array. The reason why you want to choose the > alternative that use less conversion to the other system is to simplify > the source code. > > Many common mathematical/physics/economics formulas are expressed much > simply if we use 0-based counting: > > * arithmetic series: > - 1-based: s(n) = a + (n - 1) * d > - 0-based: s(n) = a + n * d > * geometric series: > - 1-based: g(n) = a * r**(n - 1) > - 0-based: g(n) = a * r**n > * equation of motion: > - 1-based: x(t) = a + 1/2 * a * (t - 1)**2 > - 0-based: x(t) = a + 1/2 * a * t**2 > * exponential growth/decay: > - 1-based: d(t) = a * e**(k * (t - 1)) > - 0-based: d(t) = a * e**(k*t) > > > In fact, most textbooks would already uses 0-based formula for some of > these formulas already. Most physics and economic textbooks would show > the base 0 variation of the formula, and refers to t=0 as the point in > time where the "event" started. > > I often used this model of thinking for 0-based array indices (and > negative indices): > > -7 -6 -5 -4 -3 -2 -1 > +---+---+---+---+---+---+---+ > | c | h | a | r | l | i | e | > +---+---+---+---+---+---+---+ > 0 1 2 3 4 5 6 (7) > > instead of: >
so to repeat, I often use this model of thinking: -7 -6 -5 -4 -3 -2 -1 +---+---+---+---+---+---+---+ | c | h | a | r | l | i | e | +---+---+---+---+---+---+---+ 0 1 2 3 4 5 6 (7) instead of: -7 -6 -5 -4 -3 -2 -1 +---+---+---+---+---+---+---+ | c | h | a | r | l | i | e | +---+---+---+---+---+---+---+ 0 1 2 3 4 5 6 that is, the indices refers to the "gap" between the array entries. The "gap index" model highlights the naturalness of using 0-based array, negative indices, array slicing, and half-open. -- http://mail.python.org/mailman/listinfo/python-list