我有一个二维数组(18x24),想在此数组中生成一个随机位置。但是,应禁止某些职位(这些职位以元组的形式存储在另一个列表中)。
我可以随机生成x和y坐标,并检查位置是否被阻塞,如果可以,则生成一对新的坐标。但这似乎效率很低,尤其是在许多职位被封锁的情况下。
答案 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)