使用'和'关键字链接语句

时间:2017-01-20 10:24:27

标签: python python-3.x

我这样做:

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

3 个答案:

答案 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

所以,要小心,因为解释器没有做你想做的事情。