2017-01-01 165 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 
相关问题