首页 > 解决方案 > 生成随机坐标,阻止某些位置

问题描述

我有一个二维数组(18x24),想在这个数组中生成一个随机位置。但是,应该阻止某些位置(这些位置作为元组存储在另一个列表中)。

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

标签: python

解决方案


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

可以通过设定差异轻松实现。

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)


推荐阅读