2014-02-21 64 views
0

我有簡單的現象,我無法理解。 我加載一個CSV文件奇怪的python索引CSV文件

import csv 
with open('Salaries.csv', 'rb') as csvfile: 
Salaries = csv.reader(csvfile, delimiter=',') 
Salaries = [row for row in Salaries] 

我查詢它,看到5列,例如

print Salaries[1][:] 
['1985', 'BAL', 'AL', 'murraed02', '1472819'] 

如果我期待已久的第五屆指數,它不存在,它正確地拋出一個錯誤:

print Salaries[1][5] 
IndexError: list index out of range 

但是,如果我運行指標0:5不會引發錯誤:

print Salaries[1][0:5] 
['1985', 'BAL', 'AL', 'murraed02', '1472819'] 

和古怪,我看到這些結果

print Salaries[1][0:1] 
['1985'] 
print Salaries[1][0] 
1985 
print Salaries[1][1] 
BAL 

我知道我失去了一些東西基本在這裏,我只是沒有得到它。幫幫我?

+0

Python索引是基於0的;最後一個索引是* 4 *。 –

回答

1

運行print Salaries[1][0:5]將打印列表與來自0th索引到一個切片和不包括5th索引,因此在數學術語中,範圍爲[0,4]或[0,5)。

>>> mylist = [0,1,2,3,4] 
>>> mylist[0:4] 
[0, 1, 2, 3] #4 is excluded, although it is the 4th index 

在2.7,你可以隨意切到任何數量的,如果你的片範圍將返回整個列表長於其長度

>>> mylist[0:10231] 
[0, 1, 2, 3, 4] 

一些需要注意的,這是典型的蟒蛇在諸如range(x,y)之類的函數中,其中包括但不包括y。這允許調用諸如for i in range(0,len(mylist)),儘管許多python用戶會建議採取不同的做法。

+0

omg,你是對的。我在那裏失去了我的想法(混合matlab和python在一個坐着不是一個好主意)。非常感謝你! – ElChapo

+0

@ user3186094 np很高興能幫到你!爲什麼這些語言的創建者不會相互標準:) –