我想使用random.choice()从csv的第一列中选择5个值作为带宽。运行该程序后,结果是5个相同的值。我的程序怎么了?
我尝试过random.sample(),但它不适用于示例中的Error' 引发ValueError(“样本大于总体或为负数”)'。 所以我只想使用random.choice(),它没有报告错误,但是提取了5个重复值。
with open('/home/wifi.csv', 'r') as fp:
reader = csv.reader(fp)
data = [row for row in reader]
random.choice(data)
#choose 5 value from first column as bandwidth
bw = random.choice(data)[0]*5
print(bw)
我希望输出为'4.5 3.7 2.6 1.8 3.1' 但实际输出为'4.5 4.5 4.5 4.5 4.5'
答案 0 :(得分:1)
将列表与整数N相乘会重复该列表N次,您看到了:
In [4]: [1] * 5
Out[4]: [1, 1, 1, 1, 1]
您要做的是多次random.choice
。您可以循环执行此操作,也可以如下所示进行列表理解:
In [5]: x = list(range(10))
In [6]: [random.choice(x) for _ in range(10)]
Out[6]: [2, 1, 5, 7, 5, 5, 7, 3, 2, 5]
答案 1 :(得分:0)
您所做的是选择一个选项,然后乘以5。
['choice']*5
表示
['choice', 'choice', 'choice', 'choice', 'choice']
您实际要做的是分别叫random.choice()
5次,并将结果附加到列表中。
for _ in range(5): results.append(random.choice(dataset))
可以通过列表理解来简化:
[random.choice(dataset) for _ in range(5)]