我这样做:
if ycoords[0] > 0 and ycoords[1] > 0 and ycoords[2] > 0:
# do stuff
您可以通过执行以下操作来缩短此代码:
if (ycoords[0] and ycoords[1] and ycoords[2]) > 0:
# do stuff
答案 0 :(得分:9)
是的,您可以使用all
:
if all(x > 0 for x in ycoords):
或ycoords[:3]
如果ycoords
的元素数超过3个。
答案 1 :(得分:3)
不,您可以简单地使用min
来语法简化测试:
if min(ycoords[0],ycoords[1],ycoords[2]) > 0:
# do stuff
并且假设ycoords
完全有三个元素,甚至更短:
if min(*ycoords) > 0:
#do stuff
你可以在这里,如@Tagc所说,省略星号(*
):
if min(ycoords) > 0:
#do stuff
但这会导致一些开销。
另一种选择是使用all
:
if all(x > 0 for x in [ycoords[0],ycoords[1],ycoords[2]]):
# do stuff
或再次,如果ycoords
仅包含这三个元素:
if all(x > 0 for x in ycoords):
# do stuff
答案 2 :(得分:1)
不直观的是datastore.Modify( "DataWindow.Table.Select='Select 'F' as c_value from table'" )
:
“和,或都不会限制它们返回False和True的值和类型,但是 而是返回最后一个评估的参数“
只需打开一个python终端并执行:
and
为什么重要的是考虑到这一点?
您可能会认为:
>> 4 and 3
3
相当于:
(ycoords[0] and ycoords[1] and ycoords[2]) > 0
或等同于:
ycoords[0] > 0 and ycoords[1] > 0 and ycoords[2] > 0
但它相当于:
(bool(ycoords[0]) and bool(ycoords[1]) and bool(ycoords[2])) > 0
所以,要小心,因为解释器没有做你想做的事情。