gpt4 book ai didi

python - randrange() 的空范围 (1,1,0)

转载 作者:行者123 更新时间:2023-12-02 04:30:50 26 4
gpt4 key购买 nike

我试图使用 while 循环将列表拆分为训练数据和测试数据,但在运行一两次迭代后,立即弹出 randrange() 错误。无法理解出了什么问题。提取的 csv 文件有 767 行数据。下面是代码:

dataset = list(csv.reader(open("Data\diabetes.csv", 'r'), delimiter = ","))

trainSet = []
trainSize = int(0.67* len(dataset))
while len(trainSet) < trainSize:
x = len(dataset)
index = random.randint(1, x-1)
trainSet.append(dataset[index])
dataset = dataset.pop(index)

错误如下:

Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "C:\Users\Vikash Patel\AppData\Local\Programs\Python\Python38\lib\random.py", line 248, in randint
return self.randrange(a, b+1)
File "C:\Users\Vikash Patel\AppData\Local\Programs\Python\Python38\lib\random.py", line 226, in randrange
raise ValueError("empty range for randrange() (%d, %d, %d)" % (istart, istop, width))

ValueError:randrange() 的范围为空 (1, 1, 0)

最佳答案

ValueError:empty range for randrange() (1, 1, 0) 当您尝试调用 random.randint(1, 0)

时发生

发生这种情况是因为当您希望数据集具有元素弹出。然后,当循环下次迭代时,x = len(dataset) 设置 x = 1,并且行 index = random.randint(1, x-1)调用 random.randint(1, 0)。

试试这个:

import random

dataset = [10,11,12,13,14,15]

trainSet = []
trainSize = int(0.67* len(dataset))
while len(trainSet) < trainSize:
x = len(dataset)
index = random.randint(1, x-1)
trainSet.append(dataset[index])

# this changes the size of the dataset
dataset.pop(index)

输出:

> trainSet
[13, 12, 15, 14]

关于python - randrange() 的空范围 (1,1,0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61048678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com