如何在if语句中使用两个条件

use*_*774 1 python if-statement

我有以下等式:

result=[(i,j,k) for i in S for j in S for k in S if sum([i,j,k])==0]
Run Code Online (Sandbox Code Playgroud)

我想在if语句中添加另一个条件,使得我的结果集不包含(0,0,0).我尝试执行以下操作: result=[(i,j,k) for i in S for j in S for k in S if sum([i,j,k])==0 && (i,j,k)!=(0,0,0)]但是我收到指向的语法错误&&.我测试了我的表达式第一个条件并且它是正确的.

Mar*_*ers 8

您正在寻找and布尔运算符:

result=[(i,j,k) for i in S for j in S for k in S if sum([i,j,k])==0 and (i,j,k)!=(0,0,0)]
Run Code Online (Sandbox Code Playgroud)

&&JavaScript,Java,Perl,PHP,Ruby,Go,OCaml,Haskell,MATLAB,R,Lasso,ColdFusion,C,C#或C++布尔语法.


Ash*_*ary 6

除了那个错误而不是三重嵌套的for循环,你也可以itertools.product在这里使用以获得笛卡尔积S * S * S:

from itertools import product
result=[ x for x in product(S, repeat = 3) if sum(x)==0 and x != (0,0,0)]
Run Code Online (Sandbox Code Playgroud)

演示:

>>> S = [1, -1, 0, 0]
>>> [ x for x in product(S, repeat = 3) if sum(x) == 0 and x != (0,0,0)]
[(1, -1, 0), (1, -1, 0), (1, 0, -1), (1, 0, -1), (-1, 1, 0), (-1, 1, 0), (-1, 0, 1), (-1, 0, 1), (0, 1, -1), (0, -1, 1), (0, 1, -1), (0, -1, 1)]
Run Code Online (Sandbox Code Playgroud)


unu*_*tbu 5

result = [(i, j, k) for i in S
          for j in S
          for k in S
          if sum([i, j, k]) == 0 and (i, j, k) != (0, 0, 0)]
Run Code Online (Sandbox Code Playgroud)