# Python "why" questions

Lie Ryan lie.1296 at gmail.com
Fri Aug 13 20:43:50 CEST 2010

```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)
>
>

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)

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

```