python中的复杂句

python中的复杂句,python,for-loop,if-statement,Python,For Loop,If Statement,我不明白下面这句话在python中的意思 if all(x not in z for x in y): ... 原文是 if (all(dimQn not in cntx.qnameDims for dimQn in (cntx.qnameDims.keys() - roleURIdims.keys()))): ... 你能告诉我上面句子的逻辑关系吗?“如果y中的每个值都不在z” x不在z中表示x在y中将生成一系列布尔值,指

我不明白下面这句话在python中的意思

if all(x not in z

       for x in y):
       ...
原文是

if (all(dimQn not in cntx.qnameDims 

        for dimQn in (cntx.qnameDims.keys() - roleURIdims.keys()))):

        ...
你能告诉我上面句子的逻辑关系吗?

“如果
y
中的每个值都不在
z

x不在z中表示x在y中
将生成一系列布尔值,指示
y
的每个值是否在
z
True
如果值不在
z
False
如果是)。然后,
all()
检查要求序列的所有值都是
True
,在这种情况下,这意味着所有元素都不在
z

其功能等同于以下代码:

for x in y:
    if x in z:
        break
else:
    # ...

说y和z的交集是空的是一种复杂的方式。更糟糕的是,在本例中,对于某些集合
w
,它检查
z-w
z
的交集(即
z-w
)是否为空,这只有在
z==w
时才是真的。如果set(cntx.qnameDims)==set(roleURIdims),则只需编写