所以我有一个这样的整数列表:
protected void grid_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView row = (DataRowView)e.Row.DataItem;
decimal nonvat = (decimal)row["nonvat"];
e.Row.Cells[0].Text = nonvat.ToString("#,##0.00;(#,##0.00);0}");
}
}
我想从中选择随机整数:
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
但是我如何确保下次这样做时,它是不同的项目?我不想从列表中删除项目。
答案 0 :(得分:2)
如果您希望列表中的 n 不同的随机值,请使用random.sample(list, n)
。
答案 1 :(得分:1)
如果您无论如何都需要它们,并且只是想以随机顺序(但您不想更改列表),或者您没有想要的项目上限样本(除了列表大小):
import random
def random_order(some_list):
order = list(range(len(some_list)))
random.shuffle(order)
for i in order:
yield some_list[i]
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for item in random_order(my_list):
... # do stuff
或者,您可以像这样使用它:
order = random_order(my_list)
some_item = next(order)
some_item = next(order)
...
答案 2 :(得分:0)
创建一个生成器,用于检查先前生成的选项:
import random
def randomNotPrevious(l):
prev = None
while True:
choice = random.choice(l)
if choice != prev:
prev = choice
yield choice
>>> l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> randomLst = randomNotPrevious(l)
>>> next(randomLst)
1
>>> next(randomLst)
5
>>> next(randomLst)
3
>>> next(randomLst)
6
>>> next(randomLst)
5