我希望从一个具有坐标范围(xmin,xmax,ymin,ymax,zmin,zmax)的矩形框中挑选出一些物品。因此,我使用以下条件:
if not ((xi >= xmin and xi <= xmax) and (yi >= ymin and yi <= ymax) and (zi >= zmin and zi <= zmax)):
expression
但我认为Python有一些简洁的表达方式。有人能告诉我吗?
我希望从一个具有坐标范围(xmin,xmax,ymin,ymax,zmin,zmax)的矩形框中挑选出一些物品。因此,我使用以下条件:
if not ((xi >= xmin and xi <= xmax) and (yi >= ymin and yi <= ymax) and (zi >= zmin and zi <= zmax)):
expression
但我认为Python有一些简洁的表达方式。有人能告诉我吗?
操作符链的典型案例:
if not (xmin <= xi <= xmax and ymin <= yi <= ymax and zmin <= zi <= zmax):
它不仅简化了比较,允许去除括号,同时保持可读性,而且中心参数仅被评估一次,当与函数结果进行比较时特别有趣:
if xmin <= func(z) <= xmax:
因此,如果func
具有副作用,则它不等同于2个比较。
def isInBox(self, p1, p2):
return (p1.X <= self.X <= p2.X and p1.Y <= self.Y <= p2.Y and p1.Z <= self.Z <= p2.Z)
x <= y <= z
的评估方式类似于x <= y and y <= z
(但是y
只被评估一次)。它不会简单地评估x <= y
然后将结果与z
进行比较。 - chepner(x <= y) <= z
,那么你会得到你所寻找的混乱布尔效果。 - Jean-François Fabre