IndexError:列表索引超出范围
问题描述:
我有一个名为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
是否有人可以在这里提一下我的问题是什么。
答
referenceSets
初始化为第一行的空列表。当您尝试访问referenceSets[i]
时,对于任何i
,该索引将不在列表中。
目前还不清楚i
的作用是什么以及你想用它来完成什么。也许你的意思是将referenceSets
初始化为列表清单?这将允许您将referenceSets
与i
一起索引为您的代码正在执行的操作。
referenceSets = [[] for _ in xrange(len(featuresets))]
答
问题是您的referenceSets
是一个空的列表。所以,当你进入循环的第一条语句是referenceSets[i]
(与i=0
),但因为有列表中没有的元素,你得到IndexError
:
>>> referenceSets = []
>>> referenceSets[0]
IndexError: list index out of range