检查元组是否在范围内

0 投票
1 回答
4235 浏览
提问于 2025-05-01 07:45

在我的关卡编辑程序中,我有一段代码,用来移除那些已经移出可玩区域的游戏棋子:

x, y = theobj.pos
if x not in range(0,79):
    level.remove_obj(theobj)
if y not in range(0,29):
    level.remove_obj(theobj)

有没有什么有效的方法可以把这个简化成一个简单的if语句呢?我考虑过使用列表推导式来生成一个所有有效位置的元组列表,但感觉这样有点复杂。

暂无标签

1 个回答

3

你可以使用:

if not (0 <= x <= 78 and 0 <= y <= 28):
    level.remove_obj(theobj)

这里使用了链式比较来同时测试xy是否在两个边界之间。

我建议不要在这里创建range()对象;因为每次测试都会创建一个新的对象。

示例:

>>> x, y = 10, 10
>>> (0 <= x <= 78 and 0 <= y <= 28)
True
>>> x, y = 10, 42
>>> (0 <= x <= 78 and 0 <= y <= 28)
False
>>> x, y = 81, 10
>>> (0 <= x <= 78 and 0 <= y <= 28)
False

撰写回答