2013-07-04 2 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)] 

&&입니다 JavaScript, Java, Perl, PHP, 루비, 이동, OCaml로, 하스켈, MATLAB, R, 올가미, ColdFusion에서, C, C# 또는 C++ 부울 구문을 대신 사용합니다. 대신 중첩에 대한-루프 당신은 또한 S * S * S의 직교 제품을 얻기 위해 여기 itertools.product를 사용할 수 삼중의 오류에서 별도로

+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

:

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

관련 문제