擅长:python、mysql、java
<p>正如其他人所指出的,<code>s[s.Length]</code>实际上不是一个有效索引;索引位于<a href="https://en.wikipedia.org/wiki/Interval_(mathematics)" rel="nofollow noreferrer">closed interval</a><code>[0, length - 1]</code>(即,最后一个有效索引是<code>length - 1</code>,第一个索引是0)。注意,对于<em>每种</em>语言(有些语言的第一个索引是1),这不是真的,但对于Python来说,这肯定是真的。</p>
<p>想想数组是什么以及它是如何实现的:它只是一系列连续的内存位置。索引是与初始内存地址的偏移量,而不是项目号。这就是为什么第一个项的索引为0-与第一个项的地址没有偏移量(根据定义)。然而,例如,第5项的地址是<code>(address of the first item) + (4 * offset size)</code>。这就是为什么您可以在恒定时间内访问数组中的任意项。(这是一种从C/C++中的“保留”)。</p>