检查元组是否在范围内
在我的关卡编辑程序中,我有一段代码,用来移除那些已经移出可玩区域的游戏棋子:
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)
这里使用了链式比较来同时测试x
和y
是否在两个边界之间。
我建议不要在这里创建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