Python "why" questions

Lie Ryan lie.1296 at gmail.com
Fri Aug 13 14:31:45 EDT 2010


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:


In short, the choice of 0-based array is of practical purpose, rather
than historical purpose.



More information about the Python-list mailing list