2011-12-01 48 views
2

我不知道很多關於蟒蛇,但我很驚訝下面的代碼工作:爲什麼這不會導致Python中出現數組越界錯誤?

import sys 
prev = [sys.maxint]*(5) 
j = 0 
print prev[j] 
print prev[j-1] 

總的來說我認爲第二print語句應該給我一個錯誤。爲什麼這個工作?

我需要將一些python代碼轉換爲C++,並在C++這不起作用。

+0

下一個問題:[Python Primer for Python Slice Notation](http://stackoverflow.com/questions/509211/good-primer-for-python-slice-notation) –

回答

5

mylist[-1]返回mylistmylist[-2]第二到最後一個項目等

這是設計的最後一個項目。閱讀tutorial

1

在蟒X [-1]返回最後一個元件以列表

2

這是因爲的J - 1計算結果爲-1,這作爲Python列表的索引中使用時,是指最後一個元素。

2

數組l的索引可以是範圍在[-len(l), len(l)-1](注:兩端都包括)的整數。您熟悉[0, len(l)-1]範圍內的指數。 [-len(l),-1]範圍內的索引如下:在該範圍內取i,然後l[i] == l[len(l) + i]。本質上,負數從數組的末尾向後計數。因此,prev[j-1] = prev[-1] = prev[len(prev) + -1] = prev[5 - 1] = prev[4]或數組中的最後一個元素。