python 分类前百分之十_python – 尝试按百分比拆分列表

我试图通过获取一个百分比来分割列表,然后从主列表中随机地抓取元素到另外两个列表中. trainingSet是左上方列表.当我生成一个随机索引来挑选时,我遇到了一个问题.这段代码适用于一个小列表,但当我使用(len(rawRatings)= 1000)时,它不起作用.

错误:

File "/Applications/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 1, in

# Used internally for debug sandbox under external interpreter

File "/Applications/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 29, in partitionRankings

File "/Users/rderickson9/anaconda/lib/python2.7/random.py", line 241, in randint

return self.randrange(a, b+1)

File "/Users/rderickson9/anaconda/lib/python2.7/random.py", line 217, in randrange

raise ValueError, "empty range for randrange() (%d,%d, %d)" % (istart, istop, width)

ValueError: empty range for randrange() (0,0, 0)

raw Ratings是一个列表,testPercent是一个浮点数.

恩.

rawRatings = [(123,432,4),(23,342,3),(23,123,5),(234,523,3),(34,23,1), (12,32,4)]

testPercent = .2

partitionRankings(rawRatings, testPercent)

[(23,123,5),(234,523,3),(34,23,1),(123,432,4),(12,32,4)],[(23,342,3)]

def partitionRankings(rawRatings, testPercent):

testSet = []

trainingSet = []

howManyNumbers = int(round(testPercent*len(rawRatings)))

declineRandom = 0

while True:

if declineRandom == howManyNumbers:

break

randomIndex = random.randint(0, (len(rawRatings)-1)-declineRandom)

testSetTuple = rawRatings[randomIndex]

del rawRatings[randomIndex]

testSet.append(testSetTuple)

declineRandom = declineRandom + 1

trainingSet = rawRatings[:]

return (trainingSet), (testSet)

我不想选择相同的随机索引.有一次,我选择一个,我不想再次随机选择它.我不认为这是正确的.这是我遇到麻烦的部分.

randomIndex = random.randint(0, (len(rawRatings)-1)-declineRandom)


版权声明:本文为weixin_42157166原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。