IndexError:列表索引超出数组范围

时间:2017-01-01 17:00:57

标签: python list

我有一个名为featureset的变量。打印时,值如下所示。

>>> 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

有人可以提一下我的问题是什么。

2 个答案:

答案 0 :(得分:2)

问题是您的referenceSets是一个空列表。所以当你进入循环时,第一个语句是referenceSets[i]i=0},但由于列表中没有元素,你得到IndexError

>>> referenceSets = []
>>> referenceSets[0]
IndexError: list index out of range

答案 1 :(得分:1)

referenceSets初始化为第一行的空列表。当您尝试访问referenceSets[i]时,对于任何i,该索引都不会存在于列表中。

目前还不清楚i的作用是什么,以及你用它来实现的目标。也许您的意思是将referenceSets初始化为列表列表?这样您就可以使用代码当前正在进行的referenceSets索引i

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