所以我有一个10 0的列表。
[0,0,0,0,0,0,0,0,0,0].
我必须在列表中插入4个随机1。
[0,1,0,0,0,1,0,1,1,0].
如何插入没有重复索引的1。
def init_positions(n_cells, n_veh):
lst = [0] * n_cells
for i in range(n_veh):
newL = random.randint(0, n_cells)
lst[newL] = 1
return lst
position = init_positions(10,4)
print(position)
答案 0 :(得分:5)
您可以在random.sample
上使用range
来选择n 不同的索引。
import random
lst = [0] * 10
def insert_ones(n, lst):
for x in random.sample(range(len(lst)), n):
lst[x] = 1
insert_ones(4, lst) # [1, 0, 0, 1, 0, 0, 0, 1, 1, 0]
或者,您可以通过这种方式直接初始化列表,而不是改变它。
import random
def init_positions(n_cells, n_veh):
indices = set(random.sample(range(n_cells), n_veh))
return [1 if x in indices else 0 for x in range(n_cells)]
init_positions(10, 4) # [0, 1, 1, 1, 0, 0, 0, 0, 0, 1]