生成某些位置被阻止的随机坐标

时间:2019-06-19 11:03:12

标签: python

我有一个二维数组(18x24),想在此数组中生成一个随机位置。但是,应禁止某些职位(这些职位以元组的形式存储在另一个列表中)。

我可以随机生成x和y坐标,并检查位置是否被阻塞,如果可以,则生成一对新的坐标。但这似乎效率很低,尤其是在许多职位被封锁的情况下。

1 个答案:

答案 0 :(得分:3)

您可以生成一个“允许列表”(阻止列表的补充),然后从中选择一个随机选项。

可以容易地通过设置差异来实现。

import random

all_coordinates = {(x,y) for x in range(1,19) for y in range(1,25)}
blocked = {(11,19), (9,4), (2,2)} # just an example

allowed = all_coordinates - blocked

random_allowed = random.choice(list(allowed))
print(random_allowed)