2017-01-01 204 views
-3

我有一個名爲featureset的變量。打印時,值如下所示。IndexError:列表索引超出範圍

>>> featuresets[:2] 

[({'contains2(left)': True, 'contains2(this)': True, 'contains2(now)': True, 'contains2(with)': True, 'contains1(now)': False, 'contains2(name)': True, 'contains2(gay)': True, 'contains2(im)': True}, 'Statement'), ({'contains2(p)': True, 'contains1(:)': False, 'contains2(:)': True}, 'Emotion')] 

我需要將標籤(類變量)過濾到python中的數組。

這裏是我寫

referenceSets=[] 
testSets=[] 

for i, (features, label) in enumerate(featuresets): 
    referenceSets[i].append(label) 
    predicted = classifier.classify(features) 
    testSets[i].append(label) 

,但我得到的錯誤代碼,

Traceback (most recent call last): 
    File "<pyshell#37>", line 2, in <module> 
    referenceSets[i].append(label) 
IndexError: list index out of range 

是否有人可以在這裏提一下我的問題是什麼。

回答

1

referenceSets初始化爲第一行的空列表。當您嘗試訪問referenceSets[i]時,對於任何i,該索引將不在列表中。

目前還不清楚i的作用是什麼以及你想用它來完成什麼。也許你的意思是將referenceSets初始化爲列表清單?這將允許您將referenceSetsi一起索引爲您的代碼正在執行的操作。

referenceSets = [[] for _ in xrange(len(featuresets))] 
2

問題是您的referenceSets是一個空的列表。所以,當你進入循環的第一條語句是referenceSets[i](與i=0),但因爲有列表中沒有的元素,你得到IndexError

>>> referenceSets = [] 
>>> referenceSets[0] 
IndexError: list index out of range 
相關問題