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)]但是我收到指向的语法错误&&.我测试了我的表达式第一个条件并且它是正确的.
您正在寻找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++布尔语法.
除了那个错误而不是三重嵌套的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)
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)
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |