我有一个名为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
有人可以提一下我的问题是什么。
答案 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))]