2013-07-04 51 views
1

我有以下的公式:如何使用兩個條件中的if語句

result=[(i,j,k) for i in S for j in S for k in S if sum([i,j,k])==0] 

我想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)]但我得到一個語法錯誤指向&&。我爲第一個條件測試了我的表情,它是正確的。

+0

什麼類型'S'? –

回答

8

您正在尋找and boolean operator代替:

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)] 

&&JavaScriptJavaPerlPHP,紅寶石,圍棋,OCaml中,哈斯克爾,MATLAB,R,套索,ColdFusion的,C, C#或C++布爾語法來代替。

+2

&&也是Java,C和C++,... – Dahaka

+0

和幾個.. –

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)] 
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)] 

演示:

>>> 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)] 
+0

或'product(S,S,S)' – Elazar